在Python中为Tkinter标签创建类

2024-10-02 00:37:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Tkinter构建了一个应用程序,它根据文本框中输入的团队向标签显示统计信息。应用程序可以工作,但我的代码有600行长,其中大部分都在初始化标签。大多数标签共享相同的格式(创建一个label变量,创建一个label,使用grid定位标签),所以我认为应该有一种方法可以创建一个构造函数类,该类将返回一个带有几个参数的新变量。不幸的是,到目前为止我一直没有成功,主要是因为我几乎没有OOP设计经验。最好的办法是什么?以下是我要替换的代码的两个主要部分:

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')

以及

^{pr2}$

Tags: 代码定位self信息应用程序tkinter格式标签
1条回答
网友
1楼 · 发布于 2024-10-02 00:37:47

如果只想创建一个自定义标签,可以使用一个类,但是IMO如果您还想调用grid,那么最好使用函数。一个小部件永远不应该自己调用gridpack或{},因为这限制了你使用它的方式。在

由于您希望创建标签并同时调用grid,因此您只需要一个简单的helper函数。在我的示例中,我还假设您不需要为每个标签使用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)

相关问题 更多 >

    热门问题