【问题标题】: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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-21
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多