我一直在尝试使用Python复制这个设计。
我正在使用Graphics
模块obtained here。我目前无法使用任何其他图形模块。
这里的代码允许我在循环重复的一行中画出5个圆圈。
def fdShape():
win = GraphWin(199,199)
centre = Point(20,100)
for y in range(5):
for x in range(5):
centre = Point(x * 40 + 20, y * 40 + 60)
circle = Circle(centre, 20)
circle.setOutline("red")
circle.draw(win)
我在这段代码中发现的一个问题是它在窗口顶部留下一个空白行,并将最后一个圆圈线放在窗口边框之外的底部。这是第一个问题。
第二种是使用代码显示红色显示的半圆。正如您在本页顶部的图片中看到的那样。我不确定如何使用Python复制这张图片。
谢谢!
答案 0 :(得分:0)
我看到两个问题。
GraphWin应该初始化为200x200,而不是199x199。
这一行:
centre = Point(x * 40 + 20, y * 40 + 60)
最有可能是:
centre = Point(x * 40 + 20, y * 40 + 20)
答案 1 :(得分:0)
这看起来非常接近:
from graphic import *
def main():
repeat = 5
diameter = 40
radius = diameter // 2
offset = radius // 2
win = GraphWin("Graphic Design", diameter*repeat + offset, diameter*repeat)
win.setBackground('white')
for i in range(repeat):
for j in range(repeat):
draw_symbol(win, i % 2,
Point(i*diameter + offset, j*diameter), radius, 'red')
win.getMouse()
win.close()
def draw_symbol(win, kind, lower_left, radius, colour):
centre = Point(lower_left.x+radius, lower_left.y+radius)
circle = Circle(centre, radius)
circle.setOutline('')
circle.setFill(colour)
circle.draw(win)
if kind == 0:
rectangle = Rectangle(lower_left,
Point(lower_left.x+radius, lower_left.y+radius*2))
else:
rectangle = Rectangle(lower_left,
Point(lower_left.x+radius*2, lower_left.y+radius))
rectangle.setOutline('white')
rectangle.setFill('white')
rectangle.draw(win)
circle = Circle(centre, radius)
circle.setWidth(1)
circle.setOutline(colour)
circle.setFill('')
circle.draw(win)
main()