JFA*_*JFA 3 python turtle-graphics python-3.x
我正试图通过Python龟获得鼠标位置.一切正常,除了我不能让乌龟跳到鼠标点击的位置.
import turtle
def startmap(): #the next methods pertain to drawing the map
screen.bgcolor("#101010")
screen.title("Welcome, Commadore.")
screen.setup(1000,600,1,-1)
screen.setworldcoordinates(0,600,1000,0)
drawcontinents() #draws a bunch of stuff, works as it should but not really important to the question
turtle.pu()
turtle.onclick(turtle.goto)
print(turtle.xcor(),turtle.ycor())
screen.listen()
Run Code Online (Sandbox Code Playgroud)
据我所知,"turtle.onclick(turtle.goto)"这一行应该将乌龟发送到我点击鼠标的地方,但事实并非如此.打印线是一个测试,但它只返回我最后发送的位置,名义上(0,650)虽然这没有重大意义.
我尝试查找教程和pydoc,但到目前为止我还没能成功写出来.
我感谢您的帮助.谢谢.
编辑:我需要乌龟去点击位置(完成),但我还需要它来打印坐标.
你在找onscreenclick().这是一种方法TurtleScreen.a的onclick()方法是Turtle指鼠标点击龟本身.令人困惑的是,onclick()方法TurtleScreen与其onscreenclick()方法相同.
24.5.4.3.使用屏幕事件
turtle.onclick(有趣,btn = 1,添加=无)
turtle.onscreenclick(有趣,btn = 1,添加=无)参数:
- fun - 一个带有两个参数的函数,它将使用画布上单击的点的坐标调用
- num - 鼠标按钮的编号,默认为1(鼠标左键)
- add -
True或False- ifTrue,将添加一个新绑定,否则它将替换以前的绑定在此屏幕上为鼠标单击事件绑定乐趣.如果好玩的是
None,现有绑定被删除.名为TurtleScreen实例的示例
screen和名为turtle的Turtle实例:
>>> screen.onclick(turtle.goto) # Subsequently clicking into the TurtleScreen will
>>> # make the turtle move to the clicked point.
>>> screen.onclick(None) # remove event binding again
Run Code Online (Sandbox Code Playgroud)
注意:此TurtleScreen方法仅在名称下可用作全局函数
onscreenclick.全局函数onclick是源自Turtle方法的另一个函数onclick.
所以,只需调用方法screen而不是turtle.它就像将其更改为:
screen.onscreenclick(turtle.goto)
Run Code Online (Sandbox Code Playgroud)
如果你输入了turtle.onclick(lambda x, y: fd(100))(或类似的东西),你可能会看到乌龟在你点击时向前移动.随着goto作为fun参数,你会看到乌龟去......它自己的位置.
如果你想在每次移动时打印,你应该定义自己的功能,这样做,并告诉龟去某个地方.我认为这会有效,因为它turtle是一个单身人士.
def gotoandprint(x, y):
gotoresult = turtle.goto(x, y)
print(turtle.xcor(), turtle.ycor())
return gotoresult
screen.onscreenclick(gotoandprint)
Run Code Online (Sandbox Code Playgroud)
如果turtle.goto()返回None(我不知道),那么你实际上可以这样做:
screen.onscreenclick(lambda x, y: turtle.goto(x, y) or print(turtle.xcor(), turtle.ycor())
Run Code Online (Sandbox Code Playgroud)
让我知道这个是否奏效.我的计算机上没有tk所以我无法测试.
| 归档时间: |
|
| 查看次数: |
18678 次 |
| 最近记录: |