借助Python Tkinter的FO循环绘制正方形



我想通过在tkinter中使用for循环来绘制8帧。第一个白色,然后是一个黑色(如棋盘(。

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()

我写了此代码,但没有给我八帧。它只是打开了一个空白屏幕。我该怎么做?

您不需要更新每个Canvas小部件的 x1,x2,j1,j1,j2 值。您要么在相同 canvas上绘制所有矩形(x1,x2,j1和j2的值需要更新的fow(,要么在每行上网格多个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()

最新更新