0

我已经浏览了这里有关圆和 python 和调用函数的所有问题,没有任何帮助。我也不能使用乌龟,所以请不要建议。谢谢!

我正在尝试创建一个绘制具有不同颜色和半径的同心圆的程序(以制作类似目标的图像),但是需要从 main() 调用 drawCircle 函数并且它必须具有特定的参数。我可以单独运行这些功能,但不能一起运行。图形窗口显示标题并设置背景颜色,但没有圆圈。我调用 drawCircle 函数的方式有错误吗?

 from graphics import *

def drawCircle(win,centerPoint,radius,color):
    circ = Circle(centerPoint,radius)
    circ.setFill(color)
    circ.setOutline(color)
    circ.draw(win)



def main():
    win = GraphWin("Target", 600, 600)
    win.setCoords(-6,-6,6,6)
    win.setBackground("brown")
    centerPoint = Point(300, 300)
    for i in range(6):
        W = drawCircle(win,centerPoint,250,"white")
        Bk = drawCircle(win,centerPoint,200,"black")
        Bl = drawCircle(win,centerPoint,150,"dark blue")
        R = drawCircle(win,centerPoint,100,"dark red")
        Y = drawCircle(win,centerPoint,50,"yellow")
    win.getMouse()
    win.close()

main()
4

1 回答 1

0

这条线是你的问题:

win.setCoords(-6, -6, 6, 6)

您已将窗口的坐标重新定义为从 -6 到 6,然后在 300、300 处绘制一个圆——将其放在窗口外。注释掉上面的行,看看结果有多好。

您的for i in range(6):循环也有问题,因为它不断重绘相同的东西。您的 , 等作业也是W如此,Bk因为drawCircle()不返回任何内容。

如果您真的想使用win.setCoords(-6, -6, 6, 6),因为它是合理的,那么您需要相应地调整所有其他坐标:

from graphics import *

def drawCircle(win, centerPoint, radius, color):
    circ = Circle(centerPoint, radius)
    circ.setFill(color)
    circ.setOutline(color)
    circ.draw(win)

def main():
    win = GraphWin("Target", 600, 600)
    win.setCoords(-6, -6, 6, 6)
    win.setBackground("brown")
    centerPoint = Point(0, 0)

    drawCircle(win, centerPoint, 5, "white")
    drawCircle(win, centerPoint, 4, "black")
    drawCircle(win, centerPoint, 3, "dark blue")
    drawCircle(win, centerPoint, 2, "dark red")
    drawCircle(win, centerPoint, 1, "yellow")

    win.getMouse()
    win.close()

main()
于 2017-04-11T21:05:32.400 回答