我只是想在屏幕上使用turtle方法来找到鼠标单击的坐标。目前,我有一个正在玩奥赛罗的网格。我已经有了将原始坐标转换为游戏可以解释的特定网格坐标的算法。我似乎无法使onscreenclick方法正常工作。在文档上,它说要使用带有两个参数的“有趣”功能。我相信我有这个功能,但是没有用。我是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()
你太近了!
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()
赶上零钱了吗?从句法上讲,在modfiyglobal变量后删除括号。 您想要的是传递函数,您正在做的是传递函数的输出。
如果运行代码,则会收到一个异常(TypeError),表示您没有传递正确的参数;那是因为它实际上试图调用ModifyGlobal变量。减少,您想要的是
bind_to_mouseclick( my_function )
在这种情况下,每次单击鼠标都会调用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)
编辑:那行不通...好吧idk,但是应该是这样的:/如果您想要一个东西,那么它就可以单击它的那一行; onscreenclick(goto,1)