1 回答

TA貢獻2003條經驗 獲得超2個贊
下面是 tkinter 的基本代碼,它使對話框在 5 秒后彈出。
from tkinter import *
from tkinter import simpledialog
root = Tk()
root.withdraw()
def ask():
? ? simpledialog.askstring(title="Code Required",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? prompt="What's the Code?:")
? ? root.after(5000, root.destroy) #added in the root.after() to try and terminate it after set time
root.after(3000,ask) #triggers ask() after 3000 ms(3 seconds)
#root.after(10000, root.destroy) # tried to wait 10 seconds before it breaks but this doesn't show the dialog box any more
root.mainloop()
這里after()
在給定時間后觸發一個函數,即 3000 毫秒(3 秒),因此您也可以調整計時器。這只是一個示例,您可以根據需要進行更多編輯。
為什么使用after()
而不是while
和計時器?
這是因為while
循環干擾了 tkintermainloop()
導致窗口無響應,所以不建議使用while
or?time.sleep()
。after()
相反,您也可以使用tkinter 的內置方法threading
。
這里有更多內容after()
:
它主要需要兩個位置參數,
ms
并且func
ms
- 這是指定函數被觸發的時間(以毫秒為單位)。func
- 指定完成后觸發的函數ms
。
警告:?請記住,根窗口不會被破壞,它只是被隱藏,因此只要根窗口沒有被破壞,程序就會繼續在后臺運行,因此您必須恢復該窗口并將其關閉任務結束。出于這個原因,我root.destroy()
在那里添加了。
添加回答
舉報