【问题标题】:Is it possible to destroy a button or checkbox when it is clicked?单击按钮或复选框时是否可以销毁它?
【发布时间】:2022-08-18 22:10:56
【问题描述】:

我目前正在使用 tkinter 构建一个 GUI,我希望通过按钮实现的功能之一是它是否可以在单击时被破坏。我尝试了一些类似的东西:

button = Button(window, text=\"hello\", command=button.destroy()

这不起作用,因为我收到错误: UnboundLocalError: local variable \'button\' referenced before assignment.

是否有解决方法来完成这样的任务?

    标签: python tkinter frontend


    【解决方案1】:

    您需要保存对按钮的引用,然后在按钮上调用destroy 方法。这是一种方法:

    button = Button(window, text="hello")
    button.configure(command=button.destroy)
    

    您的代码中的问题是您在创建按钮之前尝试使用button。创建按钮,然后在单独的步骤中配置按钮可以解决该问题,因为 button 在调用第二行时已经存在。

    还要注意command 设置为button.destroy,而不是button.destroy()。使用括号,您将立即调用该方法,而不是将命令分配给按钮。

    【讨论】:

    • 谢谢你,布莱恩!我实际上尝试过这种方法,但没有意识到在没有括号的情况下调用函数很重要。赞!
    【解决方案2】:

    这取决于.. 如果您不想永久删除小部件(您可以使用 .grid 重新添加它),则有 .grid_forget 方法(或 .pack_forget 使用 pack 而不是网格),还有 @987654323 @ 或pack.remove,否则我建议你使用.destroy()

    【讨论】:

    • 忘记添加使用 .destroy() 不起作用的事实。编辑了我原来的帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    相关资源
    最近更新 更多