Задать вопрос
@paullmm

Как создать шахматную доску в tkinter, используя create_image?

Пытаюсь создать в игре шахматную доску из уже готового изображения, используя метод canvas create_image, но ничего не получается. Изображение приложил. Как я могу это реализовать? Может есть какие-то другие методы?

from tkinter import *
import time
class Game:
    def __init__(self):
        self.tk = Tk()
        self.tk.title("Стикмен")
        self.tk.resizable(0, 0)
        self.tk.wm_attributes("-topmost", 1)
        self.canvas = Canvas(self.tk, width=500, height=500, highlightthickness=0)
        self.canvas.pack()
        self.tk.update()
        self.bg = PhotoImage(file="background.gif")
        w = self.bg.width()
        h = self.bg.height()
        for x in range(0, 5):  
            for y in range(0, 5):
                self.canvas.create_image(x * w, y * h, image=self.bg, anchor="nw")
        self.running == True:

    def mainloop(self):
        while 1:
            if self.running == True:
            self.tk.update_idletasks()
            self.tk.update()
            time.sleep(0.01)

g = Game()
g.mainloop()


678df0adc09e3261661883.gif
  • Вопрос задан
  • 72 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
ничего не получается

Не получаться может очень по разному. Какие симптомы?
Ну и по коду много вопросов...
class Game:
    def __init__(self):
        self.tk = Tk()
        ...
        self.running == True:  # <-- это вообще некорректный синтаксис, программа даже не запустится с таким

    def mainloop(self):  # зачем вообще этот метод? чем self.tk.mainloop() не угодил?
        while 1:  # почему вечный цикл? Зачем тогда self.running?
            if self.running == True:  # незачем. достаточно просто if self.running: 
            self.tk.update_idletasks()  # где отступы? непонятно, где заканчивается if. Тоже не запустится.
            self.tk.update()
            time.sleep(0.01)
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
Aporia Севастополь
от 50 000 до 100 000 ₽
Clain Лимассол
от 5 000 €