Задать вопрос
@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 картинки?
  • Вопрос задан
  • 803 просмотра
Подписаться 1 Средний 4 комментария
Решения вопроса 1
NeiroNx
@NeiroNx
Программист
все потому что у вас одна переменная img а нужно массив равный количеству клеток - 8*8.
либо передавать имя файла а не объект картинки.

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

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

Похожие вопросы