2015-06-13 162 views
1

我的程序應該銷燬btn1並在循環中一秒鐘後重新創建它。我不是沒有爲什麼,但我的程序只銷毀btn1並不再顯示這一點。任何人都知道爲什麼?Python 3.4 tkinter按鈕

from tkinter import * 
import random 

def hide(): 
    btn1.destroy() 
    btn1.after(2000,hide) 

def show(): 
    btn1 = Button(root, bd=c, text="Hello\nWorld", relief="ridge", cursor="trek") 
    btn1.grid(row=0,column=0) 
    btn1.after(3000,show) 

root = Tk() 

root.geometry("350x150+400+400") 

c=random.randint(20,40) 

btn1 = Button(root, bd=c, text="Hello\nWorld", relief="ridge", cursor="trek") 
btn1.grid(row=0,column=0) 

btn1.after(2000,hide) 
btn1.after(3000,show) 

root.mainloop() 

回答

2

它會工作,如果你使用grid_forget而不是每次創建一個新的對象。請注意,在6秒的倍數(2000 X 3000)下發生的情況取決於哪一個是最後一個要執行的。

def hide(): 
    btn1.grid_forget() 
    btn1.after(2000,hide) 

def show(): 
    btn1.grid(row=0,column=0) 
    btn1.after(3000,show) 

root = Tk() 

root.geometry("350x150+400+400") 

c=random.randint(20,40) 

btn1 = Button(root, bd=c, text="Hello\nWorld", 
       relief="ridge", cursor="trek") 
btn1.grid(row=0,column=0) 

btn1.after(2000,hide) 
btn1.after(3000,show) 

root.mainloop()