2016-03-06 66 views
-1

我试图在执行特定按钮的回调时更改按钮上的文本。在回调执行期间更改tkinter按钮上的文本

比方说,我有“运行”作为我的按钮上的文本,我想将它更改为“正在运行”已被点击它之后,和回调执行期间。

回调执行结束后,我想改回“运行”。

我没有得到这我的代码部分是马车。

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

回答

2

睡眠使整个程序停止片刻,包括界面,通常是从改变接口本身,由于如何主循环工作停止它。

这里,尝试.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()