在Python龟中找到光标的当前位置

时间:2013-12-23 15:25:22

标签: python python-3.x turtle-graphics

如何在Python中找到可以集成到龟中的当前鼠标位置? 如果你没有使用任何非内置模块(可下载模块),我更愿意 任何答案将不胜感激

2 个答案:

答案 0 :(得分:3)

我们可以深入了解海龟的Tk基础以启用'<Motion>'事件。我将函数转换为设置/取消设置事件看起来像龟屏幕的方法,但您可以在单个屏幕实例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()

我的代码包含一个示例动作事件处理程序,它使乌龟像跟踪激光指针的猫一样跟随光标。无需点击(初始点击除外,以使窗口生效。):

enter image description here

答案 1 :(得分:-1)

根据你可以使用的turtle docs

turtle.position()

哦,等等 - 你要求鼠标位置......研究......

看起来像closest thing is

turtle.onscreenclick()

显然只有在单击鼠标按钮时才有效。