繁体   English   中英

python 3变量用于另一个变量的名称?

[英]python 3 variable used in another variable's name?

在python 3(与tkinter)我有以下图像:

SqImg1 = PhotoImage(file='SqImg1.gif')
SqImg2 = PhotoImage(file='SqImg2.gif')
SqImg3 = PhotoImage(file='SqImg3.gif')
SqImg4 = PhotoImage(file='SqImg4.gif')
...

我还有一个功能,需要根据变量返回其中一个图像。 所以如果函数确定var为1,则需要返回SqImg1 ...

def returnImage():
    list = ['ale', 'boo', 'boo', 'cat', 'doe', 'boo', 'eel']
    var = 0
    for item in list:
        if item == 'boo':
            var += 1
    return SqImg[var]

我希望上面的内容返回SqImg3

这可能很简单,但我似乎无法找到我正在寻找与谷歌。

你马上就犯了错误:

SqImg1 = PhotoImage(file='SqImg1.gif')
SqImg2 = PhotoImage(file='SqImg2.gif')
SqImg3 = PhotoImage(file='SqImg3.gif')
SqImg4 = PhotoImage(file='SqImg4.gif')
...

应该:

SqImg = [
PhotoImage(file='SqImg1.gif'),
PhotoImage(file='SqImg2.gif'),
PhotoImage(file='SqImg3.gif'),
PhotoImage(file='SqImg4.gif'),
...
]

甚至:

SqImg = [ PhotoImage(file='SqImg{}.gif'.format(i) for i in range(1, n) ]

两种选择

  • 创建字典并将字符串映射到实际变量。 例如, d = {}; d["boo"] = img3 d = {}; d["boo"] = img3
  • 如果您的图像编号正确,请调用eval()。例如, return eval("sqlimg%d" % var)

除非你有特殊情况,否则第一个选项可能就是你要找的东西

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM