我正在尝试在执行该特定按钮的回叫时更改按钮上的文本。
假设我的“按钮”上有“运行”作为文本,我想在点击它之后将其更改为“正在运行”,并且在回调执行期间。
完成回叫执行后,我想将其更改回“运行”。
我没有得到我的代码的哪一部分是错误的。
import Tkinter as tk
import time
root = tk.Tk()
def change():
button.config(text='Running')
button.config(state='disabled')
print "start"
time.sleep(5)
print "end"
button.config(state='normal')
button.config(text="Run")
button = tk.Button(root,text="Run",command=change)
button.pack()
root.mainloop()
答案 0 :(得分:2)
Sleep会使WHOLE程序暂停一段时间,包括界面,通常会因为主循环的工作方式而停止更改界面本身。
在这里,试试.after
函数,这应该可以正常工作。
import Tkinter as tk
import time
root = tk.Tk()
def change():
button.config(text='Running')
button.config(state='disabled')
print "start"
root.after(5000,changeback)
def changeback():
print "end"
button.config(state='normal')
button.config(text="Run")
button = tk.Button(root,text="Run",command=change)
button.pack()
root.mainloop()
root.after(5000,changeback)
将在5000
毫秒后调用命令,或者在不停止整个程序的情况下调用5秒,即changeback()