使用Python图形模块创建模式

问题描述 投票:0回答:2

我正在尝试使用John Zelle的图形模块在100x100的窗口中绘制特定的图案,但是我一直在努力达到预期的图案。我确定增加的幅度和范围,实际上我正确地选择了第一列,但其他列卡在一起了,我找不到我做错了什么。有什么想法吗?这是代码:

def pattern1():
    win = GraphWin("Rec",100,100)
    x=0
    y=10
    x2=20
    y2=10
    for i in range(4):
        for j in range(3):
            r = Rectangle(Point(x,1), Point(y,100))
            r.setFill("Red")
            r.setOutline("Red")
            r.draw(win)
            r2 = Rectangle(Point(1,x2), Point(100,y2))
            y=y+10
            x2=x2+20
        x=0
        x=x+20
        y2=y2+20

这是我正在尝试的模式:

“

python graphics zelle-graphics
2个回答
0
投票

[我看到需要分开的for循环的两个分开的部分:垂直线和水平线。

from graphics import *

def pattern():
    win = GraphWin("Rec", 100, 100)

    # vertical lines
    for x in range(0, 100, 40):
        r = Rectangle(Point(x, 0), Point(x+20, 100))
        r.setFill("Red")
        r.setOutline("Red")
        r.draw(win)

    # horizontal lines
    for y in range(20, 100, 40):
        r = Rectangle(Point(0, y), Point(100, y+20))
        r.setFill("Red")  # "Green"
        r.setOutline("Red")  # "Green"
        r.draw(win)

pattern()

使用不同的颜色,您可以看到

enter image description here

如果您先绘制水平线,则可以看到

enter image description here


0
投票

有时,绘制不存在的内容比绘制存在的内容容易:

from graphics import *

def pattern():
    for y in range(0, 100, 40):
        for x in range(20, 100, 40):
            r = Rectangle(Point(x, y), Point(x+20, y+20))
            r.setFill("White")
            r.setOutline("White")
            r.draw(win)

win = GraphWin("Rec", 100, 100)
win.setBackground('Red')

pattern()

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.