फीका एनीमेशन के बाद कार्यक्रम बंद क्यों नहीं है?

Aug 16 2020

मैं अजगर के लिए नया हूं और मैं इस विचार के साथ आया हूं कि मेरे जीयूआई कार्यक्रम के 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()

जवाब

3 MasoudRahimi Aug 16 2020 at 13:26

आपके 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()