程序在“如果”执行事件后未结束

时间:2019-04-25 10:20:29

标签: python turtle-graphics

应该在按下圆圈后结束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 :(得分:0)

我不知道您的代码应该做什么。在标题上,单击点将结束程序。从文本中单击点应会关闭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()

如果我完全错过了问题的要点,请编辑您的问题以阐明程序的行为和目标。