Проблема не в цвете, проблема в том, что вы рисуете каждый квадрат, начиная с 100,100. Вы добавляете белый квадрат в 100,100. Затем вы добавляете черный квадрат в 100,100, который скрывает белый квадрат. Затем вы добавляете белый квадрат, который скрывает черный квадрат, и черный квадрат, который скрывает белый квадрат, и так далее. Последний квадрат, который вы рисуете, будет белым и покрывает весь экран.
Чтобы визуализировать, что происходит, вы можете добавить периоды c обновлений в свой код. Например:
from tkinter import *
import time
WIDTH = HEIGHT = 800
DIMENSION = 8
SQ_SIZE = HEIGHT / DIMENSION
IMAGES = {}
def draw_board():
colors = ["white", "black"]
for r in range(DIMENSION+1):
for c in range(DIMENSION+1):
canvas.create_rectangle(100, 100, r * (WIDTH / DIMENSION), c * (WIDTH / DIMENSION), fill=colors[((r+c)%2)])
root.update()
time.sleep(.5)
if __name__ == "__main__":
root = Tk()
canvas = Canvas(root, width=WIDTH, height=HEIGHT, bg="bisque")
canvas.pack()
draw_board()
root.mainloop()
Обратите внимание на добавление вызова к update
и sleep
внутри l oop. Я также набрал pack
на холсте перед тем, как позвонить draw_board
. Вы можете ясно видеть, что цвета чередуются, но каждый квадрат скрывает предыдущий.
Что вам нужно сделать, так это отрегулировать начальную координату x, y для каждого квадрата. Например:
for r in range(DIMENSION):
for c in range(DIMENSION):
x0, y0 = c*100, r*100
x1, y1 = x0 + 100, y0 + 100
canvas.create_rectangle(x0, y0, x1, y1, ...)