我正在使用tkinter进行一些实验,并且遇到了grid_remove的一些麻烦。我可以使用一个简单的按钮来链接到删除特定小部件的命令,但是当它是类的一部分时,我似乎无法使它工作。
当我尝试运行时:
class Text(object):
def __init__(self, label_text, r, c):
self.label_text = label_text
self.r = r
self.c = c
self.label = Label(root, text = self.label_text).grid(row = self.r, column = self.c)
def hide(self):
self.grid_remove()
def show(self):
self.grid()
我收到错误:
AttributeError: 'Text' object has no attribute 'grid_remove'
我还希望有一个按钮来控制小部件的可见性,那么我该如何为按钮指定命令呢?目前我有:
button = Button(root, text = 'Hide', command = one.hide()).grid(row = 2)
答案 0 :(得分:0)
因此,对于遇到此问题的其他人来说,这是我需要更改以使脚本运行的原因。
首先,在创建.grid()
后立即编写Label
,将grid
的值分配给self.label
,而不是为其分配Label
。 grid
的值是none,因此创建了第一个错误。修复代码的那部分后,它看起来像:
self.label = Label(root, text = self.label_text)
self.label.grid(row = self.r, column = self.c)
下一个问题是定义hide
和show
函数。我试图grid_remove
整个Text
课程。但是,Text
类包含许多不同的内容,其中一个是Label
。我需要指定仅将grid_remove
应用于Label
而不是整个类。修正定义后,它们看起来像这样:
def hide(self):
self.label.grid_remove()
def show(self):
self.label.grid()
最后一个错误是按钮中的命令。我写过command = one.hide()
。但是,由于某些我不知道的原因,我只能在没有括号的情况下只编写command = one.hide
。修复按钮后的样子:
button = Button(root, text = 'Hide', command = one.hide).grid(row = 2)
因此我的脚本无法正常工作的原因不是由于一个简单的错误,而是所有这些的组合。我希望这将有助于将来的其他人!