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()
Итак, у меня есть эта простая интерактивная программа с использованием графиков Zelle, она просит пользователя щелкнуть по 4 очкам в окне и из него создать форму. Затем пользователю показывают 2 окна, один для выхода и один для повторного рисования. Моя ничья снова не работает, и она имеет какое-то отношение к возвращаемому значению. Я возвращаю словарь, так как мне нужен доступ к двум переменным внутри функции. В словаре returnStuff у меня есть часть, называемая «снова», которая изначально установлена в 0. Если пользователь нажимает кнопку «Запустить снова», он меняет это значение на 1, а затем за пределами функции у меня есть оператор if который должен вызывать функцию снова, если это значение снова равно 1. Оно делает это правильно ПЕРВОЕ время, но во второй раз вокруг моей программы просто останавливается все вместе, и я не понимаю, почему.Вызов функции несколько раз с возвратным значением
Может кто-нибудь объяснить, почему это происходит?
хорошо я изменил последнее утверждение, если в нижней части в то время, а затем, если они нажмите покинуть поле я установить «снова» 0, упаковывают они хотят выйти после повторения программы один раз. Но теперь он бесконечно зацикливается, как если бы я снова нажму на рисовать один раз, он будет продолжать повторяться независимо от того, какой вариант я выбираю? –
Можете ли вы опубликовать обновление? – Stanton
Хорошо, я обновил его. –