python - 如何使用Python中的类函数隐藏按钮

标签 python tkinter

from tkinter import*

root = Tk()
shape = Canvas(root)

class GUI():
    def __init__(self):
        pass

    def create_button(self, info, boom, posit):
        self.Button(root)
        self.config(text=info)
        self.bind("<Button-1>",boom)
        self.grid(column=posit[0],row=posit[1])

    def create_label(self, info, posit):
        self.Label(root)
        self.config(text=info)
        self.grid(column=posit[0],row=posit[1])

    def go_away(self):
        print("GO AWAY before")
        self.button.grid_forget()
        print("GO AWAY")

def make_GUI():
    root.title("Hexahexaflexagon")

    hexahexa = GUI()

    quit_butt = GUI()
    quit_butt.create_button("Exit","root.destroy()",[0,1])

    quit_butt.go_away()

make_GUI()
root.mainloop()

好吧,我正在尝试编写一个类函数来隐藏(如果不是,则删除)由 tkinter 创建的按钮,我是类的新手,我不断收到的错误消息是 GUI 类不有该功能或该对象没有该属性,我尝试过诸如 frm.forget().lower().grid_forget( ) 但对我来说不起作用。

回溯是:

  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 = Button(root)

您正在重新定义 self,从引用当前对象,现在引用不同的对象。标签下面还有同样的问题。这根本不是Python 的工作原理。

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

self.button = Button(root)
...
self.label = Label(root)

完成此操作后,您可以使用 grid_forget 隐藏按钮或标签,因为您使用 grid 使其可见:

self.button.grid_forget()

您还有另一个问题,因为您将命令作为字符串传递。这不会像你想象的那样工作。如果您希望能够传入一个函数,它需要是对实际函数的引用:

quit_butt.button("Exit",root.destroy,[0,1])

关于python - 如何使用Python中的类函数隐藏按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33670505/

相关文章:

python - 应用重力的镶嵌钻头板

python - Pandas 未从 xlsx 文件中读取第一列

Python:无效的 token

Python Tkinter - 属性错误 : 'str' object has no attribute 'read'

python - 如何在完成其工作后删除按键绑定(bind)

python - 设置 tkinter 窗口的坐标

python-3.x - 检测窗口何时打开

python - 继承和访问父级有什么问题吗?

python - 有没有一种巧妙的方法来使用 pandas (或其他 python 工具)检查数组中所有值的区间是否包含在内?

python - Pandas 数据框在没有 for 循环的情况下迭代行