绘图时停止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')
!
这是我的代码出错的地方:
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')
!