[英]How to have Tkinter Label text change when after certain amount of time?
[英]Tkinter: How to update a label text after a certain amount of time has passed?
因此,我試圖創建一個基本的Tkinter程序,當我按下一個按鈕時,該程序將更新標簽字段上的文本,等待X秒鍾,然后再次更新標簽。
例如:
我單擊按鈕,按下按鈕后標簽立即清除,然后程序等待3秒鍾並在屏幕上顯示“ Hello”。
下面顯示的代碼無法實現我想要的功能,因為當我按下按鈕時,它將保持按下狀態X倍的時間,然后立即進行文本更新。 我要按下按鈕,清除標簽,等待3秒鍾,然后在屏幕上顯示“ Hello”。
from tkinter import *
class Origin:
def __init__(self):
self.root = Tk()
self.root.geometry('800x600')
self.root.config(bg="black")
self.v = StringVar()
self.v.set('O R I G I N')
self.main_label = Label(self.root, textvariable=self.v, font="Arial 40", fg="white", bg="black")
self.main_label.place(x=240, y=150)
self.clear = Button(self.root, text='Clear', command=self.clear)
self.clear.place(x=400, y=400)
self.root.mainloop()
def clear(self):
#just to clear the string
self.v.set('')
self.root.after(3000, self.v.set('Hello'))
def main():
App = Origin()
if __name__ == '__main__':
main()
after
需要callback
-這意味着不帶()
和參數的函數名稱。 如果必須使用帶參數的函數,則使用`lambda
after(3000, lambda:self.v.set('Hello'))
或創建不需要參數的函數
def callback():
self.v.set('Hello')
self.root.after(3000, callback)
您當前的代碼如下
result = self.v.set('Hello')
self.root.after(3000, result)
它立即執行self.v.set('Hello')
函數,並將其結果用作after()
callback
。
編輯:正如@ acw1668在評論中所說,您也可以通過這種方式運行帶有參數的函數
self.root.after(3000, self.v.set, 'Hello')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.