所以这是我的问题,我必须为我的CS课做一张照片,这真是令人沮丧的估计在乌龟。我计划用.onclick()向我展示位置。
import turtle as t
def getPos(x,y):
print("(", x, "," ,y,")")
return
def main():
t.onclick(getPos)
t.mainloop()
main()
乌龟文档似乎说onclick将传递一个函数中的坐标,该函数包含两个变量。
http://docs.python.org/3.1/library/turtle.html#turtle.onclick
注意:当我点击箭头时它会起作用,但这不是我想要的。我想点击屏幕上的其他位置,找出我应该将箭头发送到哪个坐标!
任何帮助将不胜感激。
答案 0 :(得分:2)
您需要使用Screen类。但是,如果您想远离OOP,可以使用内置方法turtle.onscreenclick(func)
。
替换
def main():
t.onclick(getPos)
t.mainloop()
main()
带
def main():
t.onscreenclick(getPos)
t.mainloop()
main()
答案 1 :(得分:1)
很棒的工作,自己找出解决方案。
您是否浏览过turtle
的文档?
http://docs.python.org/2/library/turtle.html
您似乎可以从模块中导入screen
以及turtle
。 screen
有自己的onclick
事件,可以达到预期效果。
请注意以下关于如何访问screen
对象的行:
The function Screen() returns a singleton object of a TurtleScreen subclass.
This function should be used when turtle is used as a standalone tool for
doing graphics. As a singleton object, inheriting from its class is not
possible.
免责声明:我以前从未使用过龟。
答案 2 :(得分:0)
好吧,我想出了一个解决方法。它不是一个完美的解决方案,但它运作良好。因为onclick只会在你单击箭头时响应,我让箭头包含整个屏幕。然后我把它藏了起来。您需要做的是将鼠标悬停在您想要去的位置,按“a”,当它变黑时单击屏幕。然后shell将显示您需要的坐标。确保你总是回到(1000,0)。
import turtle as t
def showTurtle():
t.st()
return
def getPos(x,y):
print("(", x, "," ,y,")")
return
def hideTurtle(x,y):
t.ht()
return
def main():
t.speed(20)
t.shapesize(1000,1000)
t.up()
t.goto(1000,0)
t.ht()
t.onkey(showTurtle,"a")
t.listen()
t.onclick(getPos)
t.onrelease(hideTurtle)
t.mainloop()
main()
另外,如果我班上的任何人发现这个,我是binghamton的CS学生,如果你使用这个,我建议不留痕迹。教授已经看到了这一点,并将认识到它。
答案 3 :(得分:0)
你必须首先获得乌龟正在绘制的屏幕对象,然后调用屏幕对象的onclick()。这是一个例子:
import turtle as t
def getPos(x,y):
print("(", x, "," ,y,")")
return
def main():
s = t.getscreen()
s.onclick(getPos)
t.mainloop()
main()
答案 4 :(得分:0)
Python 3.7版本。
import turtle as t
def click(x,y):
print('Clicked:', x, y)
def main():
s = t.Screen()
s.onclick(click)
s.mainloop()
main()
请注意,打印是在控制台上进行的,而不是在Turtle上进行的。
答案 5 :(得分:-1)
我有一个小的儿童编码器,但是我学到了很多东西。
我只想编码,因为有人说你创造了很好的东西,但是我也喜欢分享我学到的东西。
您来到这里的原因是 onclick代码位于此处:
您需要执行以下操作:
# import package
import turtle
# screen object
wn = turtle.Screen()
# method to perform action
def fxn(x, y):
turtle.goto(x, y)
turtle.write(str(x)+","+str(y))
# onclick action
wn.onclick(fxn)
wn.mainloop()`
现在,只需在屏幕上单击并查看魔术