使用 turtle.onscreenclick 查找鼠标单击的坐标
Using turtle.onscreenclick to find coordinates of a mouse click
我只是想使用turtle方法onscreenclick来查找鼠标点击的坐标。目前,我有一个正在玩黑白棋的网格。我已经有了将原始坐标转换为游戏可以解释的特定网格坐标的算法。我似乎无法使用 onscreenclick 方法。在文档中,它说使用带有两个参数的 '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()
你离得太近了!
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
碰巧 return 一个函数,那就太好了(也许是我们想要的)。如果它 return 是整数或字符串,那就不好了。关键是异常,如上所述;如果该函数不需要任何参数,则检测起来可能会更微妙
检测点击位置实际上要容易得多。这是代码:
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)
我只是想使用turtle方法onscreenclick来查找鼠标点击的坐标。目前,我有一个正在玩黑白棋的网格。我已经有了将原始坐标转换为游戏可以解释的特定网格坐标的算法。我似乎无法使用 onscreenclick 方法。在文档中,它说使用带有两个参数的 '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()
你离得太近了!
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
碰巧 return 一个函数,那就太好了(也许是我们想要的)。如果它 return 是整数或字符串,那就不好了。关键是异常,如上所述;如果该函数不需要任何参数,则检测起来可能会更微妙
检测点击位置实际上要容易得多。这是代码:
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)