大量创建小部件

时间:2017-12-19 01:31:06

标签: python tkinter widget

我正在使用tkinter为我的一个类创建一个计算器,并且我在网格布局中制作了20个标签,每次使用几乎相同的代码行,除了名称和显然行数。我只是想知道是否有一种标准的方法可以快速有效地制作这样的标签,或者是否有人用他们的快捷方式来打破繁琐的工作?

例如,这就是我的“代码”基本上的样子。

label0 = tk.Label(frame,
                  text="Label0")
label0.grid(row=0,
            column=0,
            sticky="E")

label1 = tk.Label(frame,
                  text="Label1")
label1.grid(row=1,
            column=0,
            sticky="E")

...

labeln = tk.Label(frame,
                  text="Labeln")
labeln.grid(row=n,
            column=0,
            sticky="E")

我尝试创建所有标签名称的列表或库,然后说出类似

的内容
labelnames = ["label0",
              "labebl1",
               ...,
              "labeln"]

for i in len(labelnames):
    labelx = tk.Label(frame,
                      text=labelnames[i])
    labelx.grid(row=i,
                column=0,
                sticky="E")

这是有效的,但重点是要学习,我想知道是否有标准或“正确”的方法来做到这一点。我倾向于偏离使用课程,因为我仍然不理解它们(我知道具有讽刺意味),但我想知道这是否对他们有更好的用途。

这个方法出现的问题是我有一个输入框对应于使用类似循环创建的每个标签,我不知道如何以这种方式从条目中获取输入。

1 个答案:

答案 0 :(得分:2)

你正确地做到了。我们可以使用enumerate

使它更整洁
labels = []
for i, label in enumerate(labelnames):
    labelx = tk.Label(frame, text=label)
    labelx.grid(row=i, column=0, sticky="E")
    labels.append(labelx)

我还将生成的小部件添加到列表中。这样我以后可以访问它们。

labels[2].config(text='new text') # update the text on the 3rd Label