Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter标签延迟_Python_Tkinter_Label_Delay_Wait - Fatal编程技术网

Python Tkinter标签延迟

Python Tkinter标签延迟,python,tkinter,label,delay,wait,Python,Tkinter,Label,Delay,Wait,这也许是个愚蠢的问题。我在Tkinter GUI中有一个标签,我希望它能随着时间的推移而更新 例如: Msglabel=Tkinter.Label(... text="") Msglabel.Cofigure(text=" EXAMPLE!") Wait(5sec) Msglabel.Configure(text=" NEW EXAMPLE!") 我已经阅读了after()方法,但我正在寻找类似Wait的方法。在等待期间,您需要将控制权移交给Tkinter,因为Tkinter在单线程循环

这也许是个愚蠢的问题。我在Tkinter GUI中有一个标签,我希望它能随着时间的推移而更新

例如:

Msglabel=Tkinter.Label(... text="")

Msglabel.Cofigure(text=" EXAMPLE!")

Wait(5sec)

Msglabel.Configure(text=" NEW EXAMPLE!")

我已经阅读了
after()
方法,但我正在寻找类似Wait的方法。

在等待期间,您需要将控制权移交给Tkinter,因为Tkinter在单线程循环中更新UI

在配置调用之间休眠将挂起UI

正如您所提到的,之后的
是您想要的方法。试着这样做:

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()