使用turtle.onscreenclick查找鼠标点击的坐标

时间:2015-11-25 05:05:27

标签: python python-3.4 turtle-graphics

我只想在屏幕上点击使用龟方法来查找鼠标点击的坐标。目前,我有一个网格,我正在玩奥赛罗。我已经有了将原始坐标转换为游戏可以解释的特定网格坐标的算法。我似乎无法让onscreenclick方法工作。在文档上,它说要使用一个有趣的'函数有两个参数。我相信我有这个,但它没有用。我是python和乌龟的初学者,所以任何帮助将不胜感激:)

    import turtle

    xclick = 0
    yclick = 0

    def getcoordinates():
        turtle.onscreenclick(modifyglobalvariables())

    def modifyglobalvariables(rawx,rawy):
        global xclick
        global yclick
        xclick = int(rawx//1)
        yclick = int(rawy//1)
        print(xclick)
        print(yclick)

    getcoordinates()

2 个答案:

答案 0 :(得分:1)

你这么近了!

import turtle

xclick = 0
yclick = 0

def getcoordinates():
    turtle.onscreenclick(modifyglobalvariables) # Here's the change!

def modifyglobalvariables(rawx,rawy):
    global xclick
    global yclick
    xclick = int(rawx//1)
    yclick = int(rawy//1)
    print(xclick)
    print(yclick)

getcoordinates()

赶上改变?从语法上讲,在modfiyglobalvariables之后删除括号。 你想要的是传递函数,你正在做的是传递函数的输出。

如果你运行了代码,你会得到一个异常(TypeError),说你还没有传递正确的参数;这是因为它试图实际调用modifyglobalvariables。减少,你想要的是

bind_to_mouseclick( my_function )

在这种情况下,每次点击鼠标,都会调用my_function。此时,它可能提供也可能没有提供正确的参数。相反,你说

bind_to_mouseclick( my_function() )

Python评估my_function并将调用的结果绑定到鼠标单击。如果my_function恰好返回一个函数,那就太棒了(也许是我们想要的)。如果它返回一个整数或一个字符串,没有好处。如上所述,关键是例外;如果函数不需要参数,则可能更难以检测

答案 1 :(得分:0)

实际上,检测单击位置很容易。这是代码:

find /?

编辑: 那行不通...好吧idk,但是应该是这样的:/如果您想要一个东西,那么它就可以单击它的那一行; from turtle import * mouseclickx = 0 mouseclicky = 0 def findcoords(x,y): print(x) print(y) mouseclickx = x mouseclicky = y onscreenclick(findcoords,1)