单击Tkinter按钮并运行命令时,GUI似乎被冻结,直到命令返回。
例如,计数器在2秒后才会更新:
import tkinter as tk
import time
class Window():
def __init__(self):
self.clicks = 0
self.root = tk.Tk()
self.button_text = tk.StringVar(value="Click " + str(self.clicks))
self.button = tk.Button(self.root, textvariable=self.button_text,
command=self.click)
self.button.pack()
def click(self):
self.clicks += 1
self.button_text.set("Click " + str(self.clicks))
time.sleep(2)
if __name__ == '__main__':
Window().root.mainloop()
有没有办法允许在回调期间更新窗口?
答案 0 :(得分:1)
您可以调用按钮的update_idletasks
方法:
def click(self):
self.clicks += 1
self.button_text.set("Click " + str(self.clicks))
##################################
self.button.update_idletasks()
##################################
time.sleep(2)
将该行添加到click
将导致按钮的文本立即更新。
答案 1 :(得分:0)
睡眠阻止了gui的事件循环