Sönük animasyondan sonra program neden kapanmıyor?

Aug 16 2020

Python'da yeniyim ve GUI programımın wm_attributes'ını kontrol ederek sayfanın nasıl soluklaştırılacağına dair bir fikir buldum. Her yinelemede 'a' miktarını 0,1 azaltan bu kodu yaptım, ardından program bu solma efektini oluşturmak için 0,1 saniye uyku moduna geçiyor. Sayfa tamamen şeffaf olduktan sonra ona kökü yok etmesini söyledim. Ancak, fade animasyonu mükemmel çalışıyor ancak pencere donuyor ve animasyon tamamlandıktan sonra kapanmıyor. Burada neyi yanlış yapıyorum? İşte kodum:

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()

Yanıtlar

3 MasoudRahimi Aug 16 2020 at 13:26

Senin içinde whiledöngü, adeğişken kesin asla ulaşacak 0değeri ve böylece döngü hiç bitmeyecek. aPozitif olup olmadığını kontrol etmeniz veya çıkarmak için bir tamsayı değeri kullanmanız gerekir.

Python, ikili kayan nokta aritmetiğini kullanır. Daha fazla bilgiyi burada bulabilirsiniz .

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()