2015-09-21 120 views
3

我正在尝试编写一个使用graphics.py文件的Python程序,并创建一个棋盘(如棋盘),并使用64个黑色和白色交替显示。但是,我无法打印任何内容。在Python中绘制棋盘

这是我的代码到目前为止。请随时拆除整个代码或进行任何更改。

from graphics import GraphicsWindow 

win = GraphicsWindow(400,400) 
canvas = win.canvas() 

for j in range(10, 90, 10): 
    for j in range(10, 90, 20): 
     if j % 2 == 1: 
      for i in 10, 30, 50, 70: 
       canvas.setFill("black") 
       canvas.drawRect(i, j, 10, 10) 
    else: 
     for i in 20, 40, 60, 80: 
      canvas.setFill("white") 
      canvas.drawRect(i, j, 10, 10) 
+0

你改变你的'canvas.setFill( )'canvas.drawRect()'之前的颜色? –

+0

对不起,只是改变了这一点。 – GopherTech

+0

看起来像一个缩进问题。我认为'else'应该与'if'和'for'不一致。另外,在上面的代码中,你有'对于范围...'两次。这是一个复制粘贴错误? – saulspatz

回答

2

你应该做% 20,因为你的指数是10

倍数这里有一个对嵌套循环的一个简单的方法:

offset_x = 10  # Distance from left edge. 
offset_y = 10  # Distance from top. 
cell_size = 10  # Height and width of checkerboard squares. 

for i in range(8):    # Note that i ranges from 0 through 7, inclusive. 
    for j in range(8):   # So does j. 
     if (i + j) % 2 == 0:  # The top left square is white. 
      color = 'white' 
     else: 
      color = 'black' 
     canvas.setFill(color) 
     canvas.drawRect(offset_x + i * cell_size, offset_y + j * cell_size, 
         cell_size, cell_size) 
+0

完美!谢谢!有没有办法把checkbox放到窗口的中心? – GopherTech

+0

如果画布的尺寸与窗口大小相同,并且画布的尺寸是“宽度”和“高度”,则写入'offset_x =(width-8 * cell_size)/ 2'和'offset_y =(height - 8 * cell_size)/ 2'。 –