Mengapa program tidak ditutup setelah animasi fade?
Saya baru mengenal python dan saya mendapatkan ide tentang cara membuat halaman memudar dengan mengontrol wm_attributes dari program GUI saya. Saya membuat kode ini yang mengurangi jumlah 'a' sebesar 0,1 setiap iterasi kemudian program tidur selama 0,1 detik untuk membuat efek fade ini. Setelah halaman benar-benar transparan, saya menyuruhnya untuk menghancurkan root. Namun, animasi fade bekerja dengan sempurna tetapi jendela membeku dan tidak menutup setelah animasi selesai. Apa yang saya lakukan salah di sini? Ini kode saya:
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()
Jawaban
Dalam while
loop Anda , a
variabel tidak akan pernah mencapai nilai yang tepat 0
dan dengan demikian loop Anda tidak akan pernah berakhir. Anda juga perlu memeriksa apakah a
positif atau menggunakan nilai bilangan bulat untuk mengurangi.
Python menggunakan aritmatika floating-point biner. Anda dapat menemukan info lebih lanjut di sini .
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()