我使用Tkinter构建了一个应用程序,该应用程序根据在文本框中输入的团队向标签显示统计信息。该应用程序工作,但我的代码长600行,其中大部分是初始化标签。大多数标签共享相同的格式(创建标签变量,创建标签,使用网格定位标签),所以我认为应该有一种方法可以创建一个构造函数类,它将返回一个带有一些新变量的新变量参数。不幸的是,到目前为止我还没有成功,主要是因为我的OOP设计经验很少。最好的方法是什么?以下是代码I的两个主要部分:
self.team2RecordlabelVariable = Tkinter.StringVar()
team2Recordlabel = Tkinter.Label(self,textvariable=self.team2RecordlabelVariable,anchor='e', fg='white', bg="black")
team2Recordlabel.grid(column = rColLStart, row = 1, columnspan = colRSpan, padx=(2,10), pady=(1,20), sticky = 'E')
和
team2RL = Tkinter.Label(self,text="Record: ",anchor='e', fg='white', bg="black")
team2RL.grid(column = rColStart, row = 1, columnspan = colLSpan, padx=(2,0), pady=(1,20), sticky = 'W')
答案 0 :(得分:1)
如果您只想创建自定义标签,则可以使用类,但如果您还想调用grid
,则最好使用IMO。恕我直言,小部件永远不应该调用grid
,pack
或place
本身,因为这限制了您使用它的方式。
由于您想要创建标签并同时调用grid
,因此您只需要一个简单的辅助函数即可。在我的示例中,我还假设您并不真正需要每个标签StringVar
,因为您没有显示任何需要它的代码。
def create_label(parent, text, row, column, colspan):
label = Tkinter.Label(parent, text=text, anchor='e', fg='white', bg="black")
label.grid(column = column, row = row, columnspan = colspan, padx=(2,10), pady=(1,20), sticky = 'E')
return label
...
self.team2Recordlabel = create_label(self, "", 1, rColLStart, colRSpan)