问题
How can I find the current mouse position in Python that can be integrated into turtle? I would prefer if you did not use any non-builtin modules (downloadable modules) Any answers would be appreciated
回答1:
We can reach down into turtle's Tk underpinnings to enable the '<Motion>'
event. I cast the function to set/unset the event to look like a method of the turtle screen but you can call it on the singular screen instance turtle.Screen()
:
import turtle
def onmove(self, fun, add=None):
"""
Bind fun to mouse-motion event on screen.
Arguments:
self -- the singular screen instance
fun -- a function with two arguments, the coordinates
of the mouse cursor on the canvas.
Example:
>>> onmove(turtle.Screen(), lambda x, y: print(x, y))
>>> # Subsequently moving the cursor on the screen will
>>> # print the cursor position to the console
>>> screen.onmove(None)
"""
if fun is None:
self.cv.unbind('<Motion>')
else:
def eventfun(event):
fun(self.cv.canvasx(event.x) / self.xscale, -self.cv.canvasy(event.y) / self.yscale)
self.cv.bind('<Motion>', eventfun, add)
def goto_handler(x, y):
onmove(turtle.Screen(), None) # avoid overlapping events
turtle.setheading(turtle.towards(x, y))
turtle.goto(x, y)
onmove(turtle.Screen(), goto_handler)
turtle.shape('turtle')
onmove(turtle.Screen(), goto_handler)
turtle.mainloop()
My code includes an example motion event handler that makes the turtle follow the cursor like a cat chasing a laser pointer. No clicks necessary (except for the initial click to make the window active.):
回答2:
According to the turtle docs you can use:
turtle.position()
Oh, wait -- you asked for mouse position... researching...
Looks like the closest thing is:
turtle.onscreenclick()
which obviously only works if you click a mouse button.
来源:https://stackoverflow.com/questions/20746440/find-the-cursors-current-position-in-python-turtle