简介:我正在使用tkinter模块创建两个窗口,每个窗口都是单独的类。我想使用在第一个窗口中输入的整数,并使用它在第二个窗口中创建该数量的标签和条目。
即
import tkinter
class FirstWindow:
def __init__(self):
self.firstMaster = tkinter.Tk()
self.topFrame = tkinter.Frame(self.numberMaster)
...
self.numEntry = tkinter.Entry(self.topFrame, width=10)
...
self.averageButton = tkinter.Button(self.bottomFrame, text='next', command=self.nextstep)
...
...
tkinter.mainloop()
def nextStep(self):
self.numberItems = int(self.numEntry.get())
self.average = AveragerGUI(self.numberTests)
class AveragerGUI:
def __init__(self, numTests):
self.secondMaster = tkinter.Tk()
self.topFrame = tkinter.Frame(self.secondMaster)
for number in range(1, numTests):
self.frame'number' = tkinter.Frame(self.secondMaster)我知道这是行不通的;我包含它只是为了说明我想做的事情:创建许多依赖于numTests参数的帧。
我想使用列表,但这是一个问题,因为我不知道如何将字符串转换为变量的名称:
varList = []
for number in range(1, numberTests):
label = str(number)
var = 'Frame' + label
varList.append(var)有什么想法吗?
发布于 2013-04-18 23:53:35
如果使用列表,则不需要生成名称:
self.frames = []
for number in range(numTests):
self.frames.append(tkinter.Frame(self.secondMaster))您可以通过使用列表理解来简化这一过程:
self.frames = [tkinter.Frame(self.secondMaster) for _ in in range(numTests)]现在,您可以按索引访问每个帧:
self.frames[0]
self.frames[1]或者遍历它们:
for frame in self.frames:
# do something with frame发布于 2013-04-19 00:03:38
虽然我使用了@Martijn,但如果你真的想在循环中命名变量,我找到的最简单的方法就是使用内置的exec函数。
举个例子,如果我想让x0,x1,x2,x3等于列表的前4项,我会这样做:
>>>the_list = [1, 3.4, 'g', sum]
>>> for i in range(len(the_list)):
... exec('x%i = the_list[%i]' % (i, i))
>>> print(x0)
1
>>> print(x1)
3.4
>>> print(x2)
g
>>> print(x3)
<built-in function sum>https://stackoverflow.com/questions/16087573
复制相似问题