为小部件创建多个变量的最佳方法

时间:2017-01-01 19:16:49

标签: python tkinter

我正在尝试使用类似小部件的一些应用程序,以下是我的Entry小部件创建的方式:

        self.entries = []

    for number in range(10):
        name = "Group {}".format(number)
        self.entries.append((name, tkinter.Entry(self.parent, width=55, state= "readonly", readonlybackground= "#ccdeea")))

我已将小部件放入列表,其中此列表中的每个对象都包含条目名称和小部件。

问题是如何为这个小部件使用的每个条目变量做出什么?

提前谢谢。

1 个答案:

答案 0 :(得分:1)

你不需要名字

您可以创建包含条目的列表

self.entries = []

for _ in range(10):
    entry = tkinter.Entry(self.parent, ...)
    self.entries.append(entry)

以后再使用

print( self.entries[0].get() )
print( self.entries[1].get() )
# ...

for x in range(10):
    print( self.entries[x].get() )

如果您必须使用StringVar(),那么您仍然不需要名字

self.vars = []

for _ in range(10):
    var = tkinter.StringVar()
    tkinter.Entry(self.parent, textvariable=var)
    self.vars.append(var)

以后再使用

print( self.vars[0].get() )
print( self.vars[1].get() )
# ...

for x in range(10):
    print( self.vars[x].get() )

如果你真的需要一些名字,请使用字典

self.entries = {}

for x in range(10):
    self.entries['Group {}'.format(x)] = tkinter.Entry(self.parent, ...)

以后你可以使用

self.entries['Group 0'].get()
self.entries['Group 1'].get()
# ...

但要使用for,您需要再次format()

for x in range(10):
    print( self.entries['Group {}'.format(x)].get() )

没有任何意义。