2017-04-11 92 views
0

我已经浏览了所有关于圆和python以及调用函数的问题,但没有任何帮助。我也不能使用乌龟,所以请不要暗示。谢谢!从Python 3.6中的另一个函数调用循环函数Zelle Graphics

我想创建一个程序,用不同的颜色和半径绘制同心圆(制作一个类似目标的图像),但drawCircle函数需要从main()调用,它必须具有特定的参数。我可以单独运行这些功能,但不能一起运行。图形窗口显示标题和设置背景颜色,但没有显示圆圈。在我调用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() 

回答

0

这条线是你的问题:

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

你重新定义窗口的坐标去从-6到6,然后在300画了一个圈,300 - 把它窗外。注释掉上面的内容,看看结果会有多好。

你的for i in range(6):循环也是有问题的,因为它不断重绘同样的东西。由于您的作业WBk等,因为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() 
相关问题