2016-03-06 67 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()