运行程序后,使按钮消失

时间:2012-10-24 18:47:36

标签: python button python-2.7 tkinter

我有一个Tkinter窗口,目前有18个按钮,它们都有相同的代码:

    Button2=Button(master,text='click me',command=lambda:callback())
    Button2.grid(row=1,column=2)

当我执行此代码时,它运行程序

callback 

但我想让它运行程序然后消失;我试过了

def hide_me(event):
event.widget.grid_forget()

Button2=Button(master,text='click me',command=lambda:callback())
Button2.bind('<Button-1>',hide_me) 
Button2.grid(row=1,column=2)

但是当我按下按钮时按钮会在不执行回调的情况下消失,当我尝试时:

def callback(Buttons):

   C = Characters.pop(0)
   Buttons.bind('<Button-1>',hide_me())
   return C()


Button2=Button(master,text='click me',command=lambda:callback(Button2))
Button2.bind('<Button-1>',hide_me) 
Button2.grid(row=1,column=2)

它运行回调,但按钮不会消失。谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:1)

如果您已使用bind关键字arg,则不应致电command

只需将callback()grid_forget()打包成一个方法:

def callback_and_hide(button):
    callback()
    button.grid_forget()

Button2 = Button(master,text='click me',command=lambda: callback_and_hide(Button2))