我希望此代碼創建一個彈出窗口,它在4秒後破壞自己,但也可以通過按鈕關閉。Python關閉Toplevel窗口錯誤
def error(self):
top = Toplevel()
top.after(4000, lambda: top.destroy())
center_window(300,100, top)
top.title("Error")
Label(top, text="Please enter a valid code", height=3, width=200).pack()
ok = Button(top, text="OK", command=top.destroy)
ok.pack()
ok.bind("<Return>", lambda a: top.destroy())
ok.focus_set()
我已經運行的代碼,它工作的時間細90%,除了有時它拋出這個錯誤:
TypeError: <lambda>() takes exactly 1 argument (0 given)
我已經做了研究,指出它是Tkinters線程。我不確定這是否是我的問題,但當我拿出這行代碼:
top.after(4000, lambda: top.destroy())
它似乎工作。如果有人能幫助我,我已經自學了我所瞭解的python,所以我確信我的學習存在漏洞。我想我可能需要以某種方式使用主執行線程來銷燬這個窗口,或者創建我自己的自定義窗口小部件。任何幫助表示讚賞。
這與線程完全沒有關係。 Tkinter始終以單線程運行。 –