Python 在回拨执行期间更改tkinter按钮上的文本
我试图在某个按钮的回调执行时更改该按钮上的文本 假设我的按钮上有“Run”作为文本,我想在单击按钮之后以及回调执行期间将其更改为“Running” 回调执行完成后,我想将其改回“Run” 我不知道我的代码哪一部分有bugPython 在回拨执行期间更改tkinter按钮上的文本,python,python-2.7,python-3.x,tkinter,sleep,Python,Python 2.7,Python 3.x,Tkinter,Sleep,我试图在某个按钮的回调执行时更改该按钮上的文本 假设我的按钮上有“Run”作为文本,我想在单击按钮之后以及回调执行期间将其更改为“Running” 回调执行完成后,我想将其改回“Run” 我不知道我的代码哪一部分有bug import Tkinter as tk import time root = tk.Tk() def change(): button.config(text='Running') button.config(state='disabled') p
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()
睡眠会使整个程序停止一段时间,包括接口,通常会阻止它更改接口本身,因为主循环是如何工作的 在这里,尝试
。在
功能之后,这应该可以正常工作
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()