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



我只想使用turtle方法onscreenclick来查找鼠标单击的坐标。目前,我有一个网格,我正在其中扮演奥赛罗。我已经有了将原始坐标转换为游戏可以解释的特定网格坐标的算法。我似乎无法使onscrenclick方法起作用。在文档中,它说使用一个带有两个参数的"fun"函数。我相信我有这个,但它不起作用。我是蟒蛇和乌龟的初学者,所以任何帮助都将不胜感激:)

    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()

你离得太近了!

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碰巧返回了一个函数,那就太好了(也许是我们想要的)。如果它返回一个整数或字符串,那就不好了。关键是例外,如上所述;如果该函数不需要任何参数,那么检测可能会更微妙

from turtle import Turtle, Screen
screen = Screen()
def get_mouse_click(x, y):   
   print(x, Y)
screen.onscreenclick(get_mouse_click)
screen.mailoop()

最新更新