@thelastofme

Как нарисовать несколько изображений в Python, используя tkinter?

Суть проекта - шахматы. Первый этап, то есть отрисовка доски, прошел успешно:
5f6a063947346778386673.png
Далее надо нарисовать фигуры, 80х80 картинки которых я закинул в корневую папку.
Фигуры должны рисоваться исходя из значений ячеек матрицы pieces, которая на начало игры

[['bR','bN','bB','bQ','bK','bB','bN','bR'],
['bP','bP','bP','bP','bP','bP','bP','bP',],
['','','','','','','','',],
['','','','','','','','',],
['','','','','','','','',],
['','','','','','','','',],
['wP','wP','wP','wP','wP','wP','wP','wP',],
['wR','wN','wB','wQ','wK','wB','wN','wR']]

где первая буква (b/w) - цвет, а K, Q, R, B, N или P - фигура (или пешка).

Собственно, прорисовка фигур выглядит так:
for i in range(8):
        for j in range(8):
            x = 50 + i * 80     # 50 - отступ, 80х80 - размер клетки
            y = 50 + j * 80
            if pieces[i][j] == 'wP':
                img = PhotoImage(file="WhitePawn.png")
            elif pieces[i][j] == 'wK':
                img = PhotoImage(file="WhiteKing.png")
            elif pieces[i][j] == 'wQ':
                img = PhotoImage(file="WhiteQueen.png")
            elif pieces[i][j] == 'wR':
                img = PhotoImage(file="WhiteRook.png")
            elif pieces[i][j] == 'wN':
                img = PhotoImage(file="WhiteKnight.png")
            elif pieces[i][j] == 'wB':
                img = PhotoImage(file="WhiteBishop.png") 
            elif pieces[i][j] == 'bP':
                img = PhotoImage(file="BlackPawn.png")
            elif pieces[i][j] == 'bK':
                img = PhotoImage(file="BlackKing.png")
            elif pieces[i][j] == 'bQ':
                img = PhotoImage(file="BlackQueen.png")
            elif pieces[i][j] == 'bR':
                img = PhotoImage(file="BlackRook.png")
            elif pieces[i][j] == 'bN':
                img = PhotoImage(file="BlackKnight.png")
            elif pieces[i][j] == 'bB':
                img = PhotoImage(file="BlackBishop.png")
            canvas.create_image(x,y, anchor=NW, image=img)
            print(x, ' ', y, ' ', img) #отладка
            img = ''

Картинки на месте:
5f6a079239cb5855877782.png
но ничего не рисуется. При этом если попробовать нарисовать какую-либо одну фигуру, проблем не возникает.

Собственно, вопрос, что делать? Как нарисовать 32 картинки?
  • Вопрос задан
  • 685 просмотров
Решения вопроса 1
NeiroNx
@NeiroNx
Программист
все потому что у вас одна переменная img а нужно массив равный количеству клеток - 8*8.
либо передавать имя файла а не объект картинки.

Проблема в том что переменная ограничивает число возможных объектов до 1, так как передается ссылка на объект.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы