2015-06-13 160 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()