用Python绘制棋盘格
我正在尝试编写一个Python程序,它使用用Python绘制棋盘格,python,python-3.x,graphics,ipython,Python,Python 3.x,Graphics,Ipython,我正在尝试编写一个Python程序,它使用graphics.py文件创建一个棋盘(就像一个棋盘),其中有64个方块黑白交替。但是,我无法打印任何内容 这是到目前为止我的代码。请随意删除整个代码或进行任何更改 from graphics import GraphicsWindow win = GraphicsWindow(400,400) canvas = win.canvas() for j in range(10, 90, 10): for j in range(10, 90, 2
graphics.py
文件创建一个棋盘(就像一个棋盘),其中有64个方块黑白交替。但是,我无法打印任何内容
这是到目前为止我的代码。请随意删除整个代码或进行任何更改
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)
您应该执行
%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)
我的努力,以防对某人有用:
import matplotlib.pyplot as plt
import numpy as np
def Checkerboard(N,n):
"""N: size of board; n=size of each square; N/(2*n) must be an integer """
if (N%(2*n)):
print('Error: N/(2*n) must be an integer')
return False
a = np.concatenate((np.zeros(n),np.ones(n)))
b=np.pad(a,int((N**2)/2-n),'wrap').reshape((N,N))
return (b+b.T==1).astype(int)
B=Checkerboard(600,30)
plt.imshow(B)
plt.show()
您是否在更改
canvas.drawRect()
之前的canvas.setFill()
颜色?哦,抱歉,刚才更改了。看起来是缩进问题。我认为,else
应该与对齐,如果
不与的对齐。此外,在上面的代码中,您对范围内的j有两次。
。这是一个复制粘贴错误吗?是否有图形
的替代方法?因为我收到以下错误消息:收集图形找不到满足图形需求的版本(来自版本:)找不到与图形匹配的分发版
完美!非常感谢。有没有办法将复选框放在窗口的中心?如果画布的大小与窗口的大小相同,并且画布的尺寸是width
和height
,则写入offset\u x=(width-8*cell\u size)/2
和offset\u y=(height-8*cell\u size)/2
。