1

我有一个 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)

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

4

1 回答 1

2

bind如果您已经使用command关键字 arg,则不应调用。

只需包装callback()grid_forget()一种方法:

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

Button2 = Button(master,text='click me',command=lambda: callback_and_hide(Button2))
于 2012-10-24T18:53:21.347 回答