Нарисуйте квадрат с помощью цикла for в Python tkinter - PullRequest
0 голосов
/ 06 мая 2019

Я хочу нарисовать 8 кадров с каждой стороны, используя цикл for в Tkinter. Сначала один белый, а затем один черный (как шахматная доска).

from tkinter import *
window = Tk()
window.title("pyChess")
window.geometry("523x523+250+0")
window.configure( background = 'brown')

x1 = 0
y1 = 0
x2 = 65
y2 = 65
j1 = 65
k1 = 0
j2 = 130
k2 = 65

for i in range(8):
      i = Canvas(window, width=520, height=1000)
      i.create_rectangle(x1, y1, x2, y2, fill="white")
      x1 += 130
      x2 += 130
      i.create_rectangle(j1, k1, j2, k2, fill="black")
      j1 += 130
      j2 += 130

i.pack()
window.mainloop()

Я написал этот код, но он не дал мне восемь кадров. Он просто открыл пустой экран. Что я могу для этого сделать?

1 Ответ

0 голосов
/ 06 мая 2019

Вам не нужно обновлять значения x1, x2, j1, j2 для каждого виджета Canvas.Либо вы рисуете все прямоугольники на одинаковом холсте (для которого необходимо обновить значения x1, x2, j1 и j2), либо сетке нескольких виджетов Canvas в каждой строке.

Попробуйтеследующий код (прямоугольники нарисованы только для первой строки ):

from tkinter import *

window = Tk()    
window.title("pyChess")    
window.geometry("523x523+250+0")
window.configure( background = 'grey')

x1 = 0
y1 = 0
x2 = 65
y2 = 65
j1 = 65
k1 = 0
j2 = 130
k2 = 65
a = [0 , 1, 2, 3]

for x,i in enumerate(a):
    i = Canvas(window, width=130, height=65)
    i.create_rectangle(x1, y1, x2, y2, fill="white")
    i.create_rectangle(j1, k1, j2, k2, fill="black")
    i.grid(row = 0, column = x)

window.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...