绘图时停止Python turtle onscreenclick()

Stop Python turtle onscreenclick() when drawing

这是我的代码出错的地方:

onscreenclick(Button.clicked,1)
listen()
mainloop()

onscreenclick() 转到 Button.clicked,它检查坐标是否落在任何按钮上。如果是这样,它会以背景色覆盖它们。但是,如果擦除过程进行到一半,用户再次点击,擦除就会停止。

我的问题:有什么方法可以让 onscreenclick() 只在海龟不绘图时起作用吗?

干杯, 杰克.

创建一个在点击时更改值的变量如何?

像这样:

isdrawing = False
if (Button.clicked == 1) and (isdrawing = False):
    isdrawing = True
elif (Button.clicked == 1) and (isdrawing = True):
    isdrawing = False

然后,您可以检查变量 isdrawing 是 True 还是 False,并向 运行 其他函数请求它的特定值。

经过一段时间,我想出了一个解决办法:

import turtle as t

t.speed(1)
working = False

def drawShape(x, y):
    global working
    working = True ##True while drawing.
    t.goto(x, y)
    working = False ##false, drawing is over.

def clicked(x, y):
    global working
    if working == False: ##if turtle not drawing
        drawShape(x, y)

t.onscreenclick(clicked)
t.mainloop()

这是我经常使用的一个可能更简单的解决方案 -- 在事件处理程序中禁用事件并在退出时重新启用:

import turtle

turtle.speed('slowest')

def drawShape(x, y):
    turtle.setheading(turtle.towards(x, y))
    turtle.goto(x, y)

def clicked(x, y):
    turtle.onscreenclick(None)
    drawShape(x, y)
    turtle.onscreenclick(clicked)

turtle.onscreenclick(clicked)

turtle.mainloop()

它也适用于海龟光标的 ondrag() 处理程序,但请确保在拖动时使用 turtle.speed('fastest')