首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用循环创建变量python 3

使用循环创建变量python 3
EN

Stack Overflow用户
提问于 2013-04-18 23:51:03
回答 2查看 747关注 0票数 0

简介:我正在使用tkinter模块创建两个窗口,每个窗口都是单独的类。我想使用在第一个窗口中输入的整数,并使用它在第二个窗口中创建该数量的标签和条目。

代码语言:javascript
复制
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参数的帧。

我想使用列表,但这是一个问题,因为我不知道如何将字符串转换为变量的名称:

代码语言:javascript
复制
varList = []
for number in range(1, numberTests):
    label = str(number)
    var = 'Frame' + label
    varList.append(var)

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-18 23:53:35

如果使用列表,则不需要生成名称:

代码语言:javascript
复制
self.frames = []
for number in range(numTests):
    self.frames.append(tkinter.Frame(self.secondMaster))

您可以通过使用列表理解来简化这一过程:

代码语言:javascript
复制
self.frames = [tkinter.Frame(self.secondMaster) for _ in in range(numTests)]

现在,您可以按索引访问每个帧:

代码语言:javascript
复制
self.frames[0]
self.frames[1]

或者遍历它们:

代码语言:javascript
复制
for frame in self.frames:
    # do something with frame
票数 1
EN

Stack Overflow用户

发布于 2013-04-19 00:03:38

虽然我使用了@Martijn,但如果你真的想在循环中命名变量,我找到的最简单的方法就是使用内置的exec函数。

举个例子,如果我想让x0,x1,x2,x3等于列表的前4项,我会这样做:

代码语言:javascript
复制
>>>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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16087573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档