переменная python 3 используется в имени другой переменной? - PullRequest
0 голосов
/ 25 марта 2011

в 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

это, вероятно, просто, но я не могу найти то, что я ищу с помощью Google.

Ответы [ 2 ]

2 голосов
/ 25 марта 2011

Тут твоя ошибка:

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) ]
0 голосов
/ 25 марта 2011

Два варианта

  • Создать словарь и сопоставить строки с фактическими переменными.Например, d = {}; d["boo"] = img3
  • Вызовите eval (), если ваши изображения нумеруются правильно. Например, return eval("sqlimg%d" % var)

Первый вариант, вероятно, то, что вы ищете, если только выесть особые обстоятельства

...