使用乌龟。屏幕点击查找鼠标cli的坐标

2024-10-01 07:49:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我只想使用screenclick上的turtle方法来找到鼠标点击的坐标。目前,我有一个网格,我在上面玩奥赛罗。我已经有了将原始坐标转换为游戏可以解释的特定网格坐标的算法。我似乎无法使onscreenclick方法起作用。在docs上,它说要使用一个有两个参数的“fun”函数。我相信我有这个,但它不起作用。我是python和turtle的初学者,希望您能帮助我:)

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

Tags: 方法网格defglobalintprintturtleonscreenclick
2条回答

你离得太近了!在

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。减少,你想要的是

^{pr2}$

在这种情况下,每次单击鼠标时,my_function将被调用。此时,它可能提供了正确的参数,也可能没有提供正确的参数。你却说

bind_to_mouseclick( my_function() )

Python计算my_function,并将调用的结果绑定到鼠标单击。如果my_function碰巧返回了一个函数,那就太好了(也许是我们想要的)。如果它返回一个整数或一个字符串,那就不好了。关键是异常,如上所述;如果函数不需要任何参数,那么检测起来可能会更微妙

它实际上更容易发现你点击它的地方。代码如下:

from turtle import *
mouseclickx = 0
mouseclicky = 0
def findcoords(x,y):
    print(x)
    print(y)
    mouseclickx = x
    mouseclicky = y
onscreenclick(findcoords,1)

编辑: 那不管用。。。好吧,但应该是这样的:/如果你想要一个东西,那么它就在你点击的地方,它只有一行;onscreenclick(goto,1)

相关问题 更多 >