我目前在Tkinter中遇到GUI问题。我编造了一个例子来说明我的观点:
import tkinter as tk
import time
bob = tk.Tk()
bob.geometry("100x70")
bob.resizable(0, 0)
## Initialises the window and makes it look pretty
label = tk.Label(bob, text = "Test")
label.pack()
label.place(x=40,y=25)
## Initalises a label and makes it look pretty as well
def some_task():
print("Hi")
label.config(text = "Not a test anymore")
time.sleep(5)
print("Bye")
如果您运行此代码,您会注意到即使标签在程序等待之前更新然后打印"再见",GUI最后更新。这对我来说是一个问题,因为我的程序需要在屏幕上向用户显示正在发生的事情。
有谁知道这是为什么?有什么方法可以解决这个问题吗?
提前致谢!
答案 0 :(得分:0)
通常,要在tkinter中使用计时器,您应该使用bob.after
方法。例如,通过更改代码如下:
import tkinter as tk
import time
bob = tk.Tk()
bob.geometry("200x70")
bob.resizable(0, 0)
## Initialises the window and makes it look pretty
label = tk.Label(bob, text = "Test")
label.pack()
label.place(x=40,y=25)
## Initalises a label and makes it look pretty as well
def some_task():
print("Hi")
label.config(text = "Not a test anymore")
# time.sleep(5) # <-- comment out this
print("Bye")
bob.after(5000, some_task) # <-- use after to call some_task() after 5s.
bob.mainloop()
将导致以下操作: 1. Tk窗口,标签包含&#34; text&#34;显示。 2. 5秒后,标签更新为&#34;不再是测试&#34;