เหตุใดโปรแกรมจึงไม่ปิดหลังจากภาพเคลื่อนไหวจางลง?

Aug 16 2020

ฉันยังใหม่กับ python และฉันได้แนวคิดเกี่ยวกับวิธีทำให้หน้าเลือนหายไปโดยการควบคุมwm_attributesของโปรแกรม GUI ของฉัน ฉันสร้างรหัสนี้ซึ่งจะลดจำนวน 'a' ลง 0.1 การวนซ้ำแต่ละครั้งจากนั้นโปรแกรมจะเข้าสู่โหมดสลีปเป็นเวลา 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เป็นค่าบวกหรือใช้ค่าจำนวนเต็มในการลบ

Python ใช้เลขคณิตทศนิยมไบนารี คุณสามารถค้นหาข้อมูลเพิ่มเติมได้ที่นี่

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