Python 在回拨执行期间更改tkinter按钮上的文本

Python 在回拨执行期间更改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

我试图在某个按钮的回调执行时更改该按钮上的文本

假设我的按钮上有“Run”作为文本,我想在单击按钮之后以及回调执行期间将其更改为“Running”

回调执行完成后,我想将其改回“Run”

我不知道我的代码哪一部分有bug

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