फीका एनीमेशन के बाद कार्यक्रम बंद क्यों नहीं है?
मैं अजगर के लिए नया हूं और मैं इस विचार के साथ आया हूं कि मेरे जीयूआई कार्यक्रम के wm_attributes को नियंत्रित करके पृष्ठ को कैसे ठीक किया जाए । मैंने इस कोड को बनाया, जो प्रत्येक पुनरावृत्ति 0.1 'a' की मात्रा को घटाता है, फिर इस फीके प्रभाव को बनाने के लिए कार्यक्रम 0.1 सेकंड के लिए सो जाता है। पृष्ठ पूरी तरह से पारदर्शी होने के बाद मैंने इसे रूट को नष्ट करने के लिए कहा। हालाँकि, फीका एनीमेशन पूरी तरह से काम करता है लेकिन विंडो जम जाती है और एनीमेशन होने के बाद यह बंद नहीं होता है। मुझसे यहां क्या गलत हो रहा है? यहाँ मेरा कोड है:
from tkinter import *
import time
root = Tk()
def animation():
a = 1
while a != 0:
a -= 0.1
root.wm_attributes("-alpha", a)
time.sleep(0.1)
root.destroy()
btn = Button(root, text='Fade out', command=animation)
btn.pack()
root.mainloop()
जवाब
आपके while
लूप में, a
वैरिएबल कभी भी सटीक 0
मान तक नहीं पहुंचेगा और इस तरह आपका लूप कभी खत्म नहीं होगा। आपको या तो जांचने की आवश्यकता है कि a
क्या सकारात्मक है या घटाव के लिए पूर्णांक मान का उपयोग करें।
पायथन बाइनरी फ्लोटिंग-पॉइंट अंकगणित का उपयोग करता है। आप अधिक जानकारी यहाँ पा सकते हैं ।
from tkinter import *
import time
root = Tk()
def animation():
a = 1
while a > 0:
a -= 0.1
root.wm_attributes("-alpha", a)
time.sleep(0.1)
root.destroy()
btn = Button(root, text='Fade out', command=animation)
btn.pack()
root.mainloop()