Программа не заканчивается после 'если' выполняет события - PullRequest
0 голосов
/ 25 апреля 2019

это должно заканчиваться onclick после нажатия на круг, но оно все равно продолжается.

from turtle import *
l=0
h=True 
circle(5)
def m(x,y):
    global l
    global h
    goto(x,y)
    if((x>=0 and x<=10) and (y>=0 and y<=10)):
        h=False
    goto(0,0)
def r():
    onscreenclick(m)
if h:
    ontimer(r(),1000)
mainloop()

1 Ответ

0 голосов
/ 25 апреля 2019

Я не могу понять, что должен делать ваш код. От заголовка, нажав на точку должна завершить программу. Из текста нажатие на точку должно отключить обработчик события onscreenclick(), но у вас не будет видимого способа проверить, произошло это или нет.

Предполагая, что окончание программы было целью, вот как мы могли бы переработать вашу программу для этого:

from turtle import *

def m(x, y):

    if -5 <= x <= 5 and -5 <= y <= 5:
        bye()  # exit from mainloop()

hideturtle()
penup()

dot(10)  # use dot (diameter) instead of circle (radius) as it's centered

goto(100, 100)  # get the turtle away from center

onscreenclick(m)

mainloop()

Однако, если это ваша цель, мы можем упростить код, сделав точку самой черепахой и установив событие onclick() на черепахе вместо экрана:

from turtle import *

def m(x, y):
    bye()  # exit from mainloop()

shape('circle')
shapesize(0.5)

onclick(m)

mainloop()

Если я полностью пропустил суть вашего вопроса, измените его, чтобы уточнить поведение и цели вашей программы.

...