0

在 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

这可能很简单,但我似乎无法通过谷歌找到我想要的东西。

4

2 回答 2

2

马上就有你的错误:

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) ]
于 2011-03-25T19:28:49.823 回答
0

两种选择

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

除非您有特殊情况,否则第一个选项可能是您正在寻找的

于 2011-03-25T19:22:51.937 回答