如何在python中使用类函数隐藏按钮

如何在python中使用类函数隐藏按钮,python,tkinter,Python,Tkinter,问题在于这一行: Traceback (most recent call last): File "N:\HW\Hexahexaflexagon generator.py", line 94, in <module> make_GUI() File "N:\HW\Hexahexaflexagon generator.py", line 63, in make_GUI quit_butt.go_away() File "N:\HW\H

问题在于这一行:

  Traceback (most recent call last):
    File "N:\HW\Hexahexaflexagon generator.py", line 94, in <module>
      make_GUI()
    File "N:\HW\Hexahexaflexagon generator.py", line 63, in make_GUI
      quit_butt.go_away()
    File "N:\HW\Hexahexaflexagon generator.py", line 51, in go_away
      self.button.grid_forget()
  AttributeError: 'function' object has no attribute 'grid_forget'
您正在重新定义
self
,从引用当前对象改为引用其他对象。再往下看,标签也有同样的问题。这根本不是python的工作方式

您必须将小部件存储为
self
上的属性,而不是
self
本身

self = Button(root)
完成此操作后,您可以使用
grid\u忘记
隐藏按钮或标签,因为您正在使用
grid
使其可见:

self.button = Button(root)
...
self.label = Label(root)
还有一个问题是,您将命令作为字符串传递。这不会像你想象的那样起作用。如果希望能够传入函数,它需要是对实际函数的引用:

self.button.grid_forget()

请修复“不可靠的缩进”,作为提供一个实际显示问题的缩进的一部分。修复了它,对不起,我只是想快速提问。你能改为正确提问吗?请提供完整的回溯,并将代码减少到所需的最低限度。修复了您的问题您希望
self=Button(root)
做什么
self.button
是创建该按钮的方法,而不是按钮本身-尝试将其重命名为例如
def create_button
以使其更清晰。非常感谢!现在这很有意义,我知道字符串函数text quit_按钮,只是每当按钮被创建时,命令就会运行并销毁root,所以我将其设置为text,以便程序运行,我可以稍后修复它
self.button.grid_forget()
quit_butt.button("Exit",root.destroy,[0,1])