Function 使用返回值多次调用函数 从图形导入* def draw(): returnStuff={'reach':0,'1st':1} 再画一次=假 win=GraphWin(“四边形制造者”,600600) 胜利。挫折(“黄色”) text=text(点(150,15),“单击4个点以创建四边形”) text.draw(赢) #得到4分 p1=win.getMouse() p1.平局(获胜) p2=win.getMouse() p2.平局(获胜) p3=win.getMouse() p3.平局(获胜) p4=win.getMouse() p4.平局(获胜) 顶点=[p1、p2、p3、p4] #绘制形状 四边形=多边形(顶点) quad.setFill('red') quad.setOutline('黑色') 四边形。设置宽度(3) 四人组。平局(赢) text.setText('单击相应的框') #退出框 quitBox=矩形(点(30500),点(100550)) quitBox.setFill('绿色') 退出框。平局(赢) quitorNah=文本(第60490点),“退出”) 基多纳。平局(获胜) #又是一个盒子 quitBox=矩形(点(480500),点(550550)) quitBox.setFill('绿色') 退出框。平局(赢) quitorNah=文本(点(510490),“再次绘制”) 基多纳。平局(获胜) click=win.getMouse() x=单击.getX() y=单击.getY() 尽管如此: 如果30
我有一个使用Zelle graphics的简单交互式程序,它要求用户点击窗口中的4个点,然后从中创建一个形状。然后,向用户显示两个框,一个退出,一个重新绘制。我的绘图又不起作用了,它与返回值有关。我返回一个字典,因为我需要访问函数中的两个变量。在“returnStuff”字典中,我有一个名为“Reach”的部分,它最初设置为0。如果用户单击“再次运行”框,它会将该值更改为1,然后在函数外部有一条If语句,如果该值为1,则应再次调用该函数。它在第一次正确地做到了这一点,但在我的程序的第二次只是一起停止,我不明白为什么Function 使用返回值多次调用函数 从图形导入* def draw(): returnStuff={'reach':0,'1st':1} 再画一次=假 win=GraphWin(“四边形制造者”,600600) 胜利。挫折(“黄色”) text=text(点(150,15),“单击4个点以创建四边形”) text.draw(赢) #得到4分 p1=win.getMouse() p1.平局(获胜) p2=win.getMouse() p2.平局(获胜) p3=win.getMouse() p3.平局(获胜) p4=win.getMouse() p4.平局(获胜) 顶点=[p1、p2、p3、p4] #绘制形状 四边形=多边形(顶点) quad.setFill('red') quad.setOutline('黑色') 四边形。设置宽度(3) 四人组。平局(赢) text.setText('单击相应的框') #退出框 quitBox=矩形(点(30500),点(100550)) quitBox.setFill('绿色') 退出框。平局(赢) quitorNah=文本(第60490点),“退出”) 基多纳。平局(获胜) #又是一个盒子 quitBox=矩形(点(480500),点(550550)) quitBox.setFill('绿色') 退出框。平局(赢) quitorNah=文本(点(510490),“再次绘制”) 基多纳。平局(获胜) click=win.getMouse() x=单击.getX() y=单击.getY() 尽管如此: 如果30,function,python-3.x,dictionary,return-value,zelle-graphics,Function,Python 3.x,Dictionary,Return Value,Zelle Graphics,我有一个使用Zelle graphics的简单交互式程序,它要求用户点击窗口中的4个点,然后从中创建一个形状。然后,向用户显示两个框,一个退出,一个重新绘制。我的绘图又不起作用了,它与返回值有关。我返回一个字典,因为我需要访问函数中的两个变量。在“returnStuff”字典中,我有一个名为“Reach”的部分,它最初设置为0。如果用户单击“再次运行”框,它会将该值更改为1,然后在函数外部有一条If语句,如果该值为1,则应再次调用该函数。它在第一次正确地做到了这一点,但在我的程序的第二次只是一起
有人能解释为什么会这样吗 我想你需要一段时间
from graphics import *
def draw():
returnStuff = {'again' : 0, '1st' : 1 }
draw.again = False
win = GraphWin("Quadrilateral Maker", 600, 600)
win.setBackground("yellow")
text = Text(Point(150, 15), 'Click 4 points to create a Quadrilateral')
text.draw(win)
#gets the 4 points
p1 = win.getMouse()
p1.draw(win)
p2 = win.getMouse()
p2.draw(win)
p3 = win.getMouse()
p3.draw(win)
p4 = win.getMouse()
p4.draw(win)
vertices = [p1, p2, p3, p4]
#draws the shape
quad = Polygon(vertices)
quad.setFill('red')
quad.setOutline('black')
quad.setWidth(3)
quad.draw(win)
text.setText('Click in the appropriate box.')
#Quit box
quitBox = Rectangle(Point(30, 500), Point(100,550))
quitBox.setFill('green')
quitBox.draw(win)
quitorNah = Text(Point(60, 490), 'Quit')
quitorNah.draw(win)
#again box
quitBox = Rectangle(Point(480, 500), Point(550,550))
quitBox.setFill('green')
quitBox.draw(win)
quitorNah = Text(Point(510, 490), 'Draw Again')
quitorNah.draw(win)
click = win.getMouse()
x = click.getX()
y = click.getY()
while True:
if 30 < x < 100 and 500 < y < 550:
returnStuff['again'] = 0
win.close()
break
elif 480 < x < 550 and 500 < y < 550:
returnStuff['again'] = 1
win.close()
break
return returnStuff
count = 1
returnValue = draw()
if returnValue['1st'] == 1:
count = 0
while count == 1 or returnValue['again'] == 1:
return_value = draw()
好的,我把底部的最后一个if语句改成了一段时间,然后如果他们单击退出框,我会将“再次”设置为0,以防他们在重复程序一次后想要退出。但现在它是内环循环,就像我再次单击draw一样,无论我选择哪个选项,它都会继续重复?您需要重置return_值(如上所述)似乎没有做任何事情OOPS…set returnValue=draw()。。我明白了,你要检查的是whileAh,所以你每次都要重述变量的返回值?
while count==1 or returnValue['again'] == 1:
returnValue = draw()