Есть ли способ изменить имя переменной, пока продолжается для l oop - PullRequest
1 голос
/ 23 апреля 2020

Используя python, пытаюсь сделать карточную игру. У меня есть изображения, сохраненные на моем компьютере с тем же именем, что и карточки, например, AH - Ace of hearts и сохраненные на моем компьютере как AH.png. Этот код не работает, потому что, поскольку каждая итерация продолжается, изображение, которое она делает, заменяет последнее, так как там имя переменной для кнопки в Tkinter одинаково? Таким образом, единственное изображение, которое отображается, является окончательным. Есть ли способ это исправить?

import tkinter
window = tkinter.Tk()

cards = ['AH', 'KH', 'QH', 'JH', '10H', '9H', '8H']
# function to turn the list of cards to images

number = 0
for bit in cards:
    print(bit)
    Photo = tkinter.PhotoImage(file=str(bit) + '.png')
    cardButton = tkinter.Button(window, image=Photo)
    cardButton.grid(row=5, column=number)
    number = number + 1

window.mainloop()

1 Ответ

2 голосов
/ 23 апреля 2020

Вместо того, чтобы создавать разные переменные, сохраните все Button объекты в dict, который сопоставляет «имя» карты с ее кнопкой.

window = tkinter.Tk()

cards = ['AH', 'KH', 'QH', 'JH', '10H', '9H', '8H']
# function to turn the list of cards to images

card_buttons = {}
for number, bit in enumerate(cards):
    photo = tkinter.PhotoImage(file=bit + '.png')
    card_buttons[bit] = tkinter.Button(window, image=photo)
    card_buttons[bit].grid(row=5, column=number)

window.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...