如何通过按键停止 'turtle.onscreenclick' 功能?
How to stop a 'turtle.onscreenclick' function by pressing a key?
我制作了一个简单的程序,允许您在屏幕上单击以使用乌龟绘制东西。您移动到的每个点都记录在一个数组中。当用户完成绘制时,我想使用 JSON 将此数组写入文本文件。
import turtle
from turtle import Turtle, Screen
pastMovementsX = [0]
pastMovementsY = [0]
screen = Screen()
screen.setup(500, 350)
screen.screensize(600, 600)
def move(x, y):
moveto = turtle.goto(x, y)
pastMovementsX.append(turtle.xcor())
pastMovementsY.append(turtle.ycor())
turtle.onscreenclick(move)
turtle.onscreenclick()
之后的任何代码都不会 运行。我假设它一直在检查屏幕上的点击,因此无法继续执行该程序。
我已经尝试了几件事。值得注意的是线程和多处理来做到这一点。它没有用,经过一些研究后,turtle 模块似乎不喜欢 threading/multiprocessing.
或者不能很好地工作
如何让程序停止 turtle.onscreenclick()
并在按键后继续执行更多代码?
Any code after turtle.onscreenclick() will not run. I assume that it
keeps checking for a click on the screen and therefore can't continue
with the program.
你的问题无效,因为你的前提不正确:
from turtle import Turtle, Screen
def move(x, y):
moveto = turtle.goto(x, y)
pastMovementsX.append(x)
pastMovementsY.append(y)
pastMovementsX = [0]
pastMovementsY = [0]
screen = Screen()
screen.setup(500, 350)
screen.screensize(600, 600)
turtle = Turtle()
screen.onclick(move)
turtle.circle(50)
screen.mainloop()
onclick()
方法设置处理函数并继续执行下一条语句,它不会检查 任何内容。这是由 tkinter 事件循环完成的,该循环由程序中的最终 mainloop()
调用转移到。
我的猜测是您没有正确考虑代码计划执行的操作顺序,描述这些操作可能有助于解决您的实际问题。
我制作了一个简单的程序,允许您在屏幕上单击以使用乌龟绘制东西。您移动到的每个点都记录在一个数组中。当用户完成绘制时,我想使用 JSON 将此数组写入文本文件。
import turtle
from turtle import Turtle, Screen
pastMovementsX = [0]
pastMovementsY = [0]
screen = Screen()
screen.setup(500, 350)
screen.screensize(600, 600)
def move(x, y):
moveto = turtle.goto(x, y)
pastMovementsX.append(turtle.xcor())
pastMovementsY.append(turtle.ycor())
turtle.onscreenclick(move)
turtle.onscreenclick()
之后的任何代码都不会 运行。我假设它一直在检查屏幕上的点击,因此无法继续执行该程序。
我已经尝试了几件事。值得注意的是线程和多处理来做到这一点。它没有用,经过一些研究后,turtle 模块似乎不喜欢 threading/multiprocessing.
或者不能很好地工作如何让程序停止 turtle.onscreenclick()
并在按键后继续执行更多代码?
Any code after turtle.onscreenclick() will not run. I assume that it keeps checking for a click on the screen and therefore can't continue with the program.
你的问题无效,因为你的前提不正确:
from turtle import Turtle, Screen
def move(x, y):
moveto = turtle.goto(x, y)
pastMovementsX.append(x)
pastMovementsY.append(y)
pastMovementsX = [0]
pastMovementsY = [0]
screen = Screen()
screen.setup(500, 350)
screen.screensize(600, 600)
turtle = Turtle()
screen.onclick(move)
turtle.circle(50)
screen.mainloop()
onclick()
方法设置处理函数并继续执行下一条语句,它不会检查 任何内容。这是由 tkinter 事件循环完成的,该循环由程序中的最终 mainloop()
调用转移到。
我的猜测是您没有正确考虑代码计划执行的操作顺序,描述这些操作可能有助于解决您的实际问题。