Отрисовка нескольких объектов Canvas
Пробую создать несколько квадратов в сетке 4×4 посредством Canvas().
field = [
[0,0,0,0],
[0,0,0,0],
[0,0,0,0],
[0,0,0,0]] #двумерный массив
root = Tk() # инициализируем tk
root.geometry('1080x1920')
rect = Canvas(root) # инициализируем класс Canvas()
y_rt = 400 # координаты x, y для постановки фигур методом place()
for i in field: # итерируем по столбцам матрицы
y_rt+=50
x_rt = 100
for j in i: # итерируем по строкам матрицы
rect.create_rectangle(0, 0, 220, 220, fill = 'black')
rect.place(x = x_rt, y = y_rt)
x_rt+=50
Но отрисовывает, по-видимому, только последний квадрат.
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
- Canvas надо размещать один раз.
- Квадраты рисовать сразу по заданным координатам.
from tkinter import *
field = [
[0,0,0,0],
[0,0,0,0],
[0,0,0,0],
[0,0,0,0]] #двумерный массив
root = Tk() # инициализируем tk
root.geometry('1080x1920')
rect = Canvas(root) # инициализируем класс Canvas()
rect.pack(fill=BOTH, expand=True) # <<< размещаем канвас
y_rt = 200 # координаты x, y для постановки фигур
for i in field: # итерируем по столбцам матрицы
y_rt += 50
x_rt = 100
for j in i: # итерируем по строкам матрицы
rect.create_rectangle(x_rt, y_rt, x_rt+45, y_rt+45, fill='black', outline='green', width=2) # <<< сразу задаём нужные координаты
x_rt += 50
root.mainloop()