0
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

Я думаю, вам нужно какое-то время ...

while count==1 or returnValue['again'] == 1: 
    returnValue = draw() 
+0

хорошо я изменил последнее утверждение, если в нижней части в то время, а затем, если они нажмите покинуть поле я установить «снова» 0, упаковывают они хотят выйти после повторения программы один раз. Но теперь он бесконечно зацикливается, как если бы я снова нажму на рисовать один раз, он будет продолжать повторяться независимо от того, какой вариант я выбираю? –

+0

Можете ли вы опубликовать обновление? – Stanton

+0

Хорошо, я обновил его. –

Смежные вопросы