我正在从事一个项目,该项目涉及创建许多Tkinter标签和Entry小部件实例,这些实例将始终彼此对齐。为了节省时间,我创建了一个自定义类,如下所示:
class labelEntry(Label,Entry):
def __init__(self,parent,label,row,column,bg_color):
Label.__init__(self,parent)
self['text']=label
self['justify']='right'
self['bg']=bg_color
self.grid(row=row,column=column, sticky=E)
Entry.__init__(self,parent)
self['width']="10"
self.grid(row=row,column=column+1)
这将创建我想要的配置,并且很容易安排(我将它们存储在框架中)。问题是我不知道如何访问我创建的Entry小部件,因为它们是该新类的一部分。
我希望从条目小部件中读取和删除条目。我想清除它们的最佳猜测是,该按钮被送入了同一帧:
class clearAllEntry(Button):
def clearAll(self,targetFrame):
targetFrame.labelEntry.Entry.delete(0,END)
def __init__(self,parent,targetFrame):
Button.__init__(self,parent,text='Clear All Entries',bg='black',fg='white')
self['command']= "clearAll(targetFrame)"
我也将grid_slave视为一种方法,但是存在相同的问题。 任何建议/帮助将不胜感激。
答案 0 :(得分:0)
首先,如果要创建一个包含两个不同类的对象的新类,则不应使用继承。而是使用合成。
第二,要访问条目窗口小部件,请将其保存到实例变量。
例如:
class LabelEntry():
def __init__(self, parent, label, row, column, bg_color):
self.label = Label(parent, text=label, justify='right', bg=bg_color)
self.entry = Entry(parent, width=10)
self.label.grid(row=row, column=column, sticky="e")
self.grid(row=row,column=column+1)
稍后,您可以像引用任何其他属性一样引用这些属性:
le1 = LabelEntry(root)
...
print(le1.entry.get())