【问题标题】:Make button disappear after running procedure运行程序后使按钮消失
【发布时间】:2012-10-14 21:03:36
【问题描述】:

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

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

【问题讨论】:

    标签: python button python-2.7 tkinter


    【解决方案1】:

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

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

    def callback_and_hide(button):
        callback()
        button.grid_forget()
    
    Button2 = Button(master,text='click me',command=lambda: callback_and_hide(Button2))
    

    【讨论】:

    • 我稍作修改,您的版本返回错误,您需要将参数“Button2”传递给“callback_and_hide()”。还有“event.widget.grid_forget”返回和错误你只需要使用“event.grid_forget()”
    猜你喜欢
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多