Задать вопрос
@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 картинки?
  • Вопрос задан
  • 877 просмотров
Подписаться 1 Средний 4 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Профессия Python-разработчик + ИИ
    10 месяцев
    Далее
Решения вопроса 1
NeiroNx
@NeiroNx
Программист
все потому что у вас одна переменная img а нужно массив равный количеству клеток - 8*8.
либо передавать имя файла а не объект картинки.

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

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

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽