【问题标题】:Python Tkinter Label DelayPython Tkinter 标签延迟
【发布时间】:2013-03-29 03:15:25
【问题描述】:
这可能是一个愚蠢的问题。我在 Tkinter GUI 中有一个标签,我希望它随着时间的推移而更新。
例子:
Msglabel=Tkinter.Label(... text="")
Msglabel.Cofigure(text=" EXAMPLE!")
Wait(5sec)
Msglabel.Configure(text=" NEW EXAMPLE!")
我已经阅读了 after() 方法,但我正在寻找类似 Wait 之类的东西。
【问题讨论】:
标签:
python
tkinter
label
delay
wait
【解决方案1】:
您需要在等待期间将控制权交给 Tkinter,因为 Tkinter 在单线程循环中更新 UI。
在配置调用之间休眠会挂起 UI。
正如您所提到的,after 是您想要的方法。试试这样的:
try:
import Tkinter as tkinter # Python 2
except ImportError:
import tkinter # Python 3
import itertools
class MyApplication(object):
def __init__(self):
# Create and pack widgets
self.root = tkinter.Tk()
self.label = tkinter.Label(self.root)
self.button = tkinter.Button(self.root)
self.label.pack(expand=True)
self.button.pack()
self.label['text'] = 'Initial'
self.button['text'] = 'Update Label'
self.button['command'] = self.wait_update_label
# Configure label values
self.label_values = itertools.cycle(['Hello', 'World'])
def launch(self):
self.root.mainloop()
def wait_update_label(self):
def update_label():
value = next(self.label_values)
self.label['text'] = value
update_period_in_ms = 1500
self.root.after(update_period_in_ms, update_label)
self.label['text'] = 'Waiting...'
if __name__ == '__main__':
app = MyApplication()
app.launch()