Find the cursor's current position in Python turtle

随声附和 提交于 2019-12-01 23:22:10

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!