【问题标题】:Get mouse click coordinates in Python turtle在 Python 乌龟中获取鼠标点击坐标
【发布时间】:2017-08-10 06:11:17
【问题描述】:

我试图在海龟屏幕上获取鼠标点击的坐标,但我的代码不起作用。我想这与时间有关,但我尝试添加 5 秒的延迟,但没有帮助。

这是我的代码:

def get_mouse_click_coor(x,y):
   print [x,y]
turtle.onscreenclick(get_mouse_click_coor)

请帮我理解一下代码有什么问题,谢谢:)

【问题讨论】:

  • 请考虑将@cdlane 的答案标记为已接受(左侧的复选标记),因为它对您有用。

标签: python turtle-graphics


【解决方案1】:

您的代码看起来基本正确,但让我们让它完整:

import turtle

def get_mouse_click_coor(x, y):
    print(x, y)

turtle.onscreenclick(get_mouse_click_coor)

turtle.mainloop()

上面的工作——窗口上的所有点击都会将 x 和 y 坐标打印到控制台。试一试,如果它不适合你,请告诉我。

我只需要获取一次坐标

这很简单,我们只需在第一次点击时关闭点击处理程序:

import turtle

def get_mouse_click_coor(x, y):
    turtle.onscreenclick(None)
    print(x, y)

turtle.onscreenclick(get_mouse_click_coor)

turtle.mainloop()

【讨论】:

  • 它工作但它正在循环,我只需要一次获取坐标...
  • @Eylon,我已经扩充了我的答案,以展示如何只响应一次点击。
  • 谢谢,但我需要代码在点击后继续,然后点击一下然后卡住。单击后如何使其继续? @cdlane
  • (它实际上并没有卡住,它只是因为turtle.mainloop()而一直循环,我删除了那条线,它没有得到坐标
  • @Eylon,您的术语 loopingstuck 并不能真正描述正在发生的事情。 mainloop() 调用是必需的,它允许处理鼠标点击之类的事情。如果您希望在点击后发生 something,请在点击处理程序中调用该 something。或者让点击处理程序触发一个计时器事件。无论如何,如果它没有做你想做的事,你需要回到你的问题,做一个更详细的工作来描述你想要什么。实际上,代码会按照您的要求执行。
【解决方案2】:

为什么不直接添加一个屏幕对象并应用与之相关的所有屏幕?

像这样:

import turtle

def get_coor(x, y):
    print(x, y)

screen = turtle.Screen()

turtle.onscreenclick(get_coor)
screen.mainloop()

基本上,您的屏幕会随着循环保持正常运行,而海龟则执行单独的工作;)

【讨论】:

    猜你喜欢
    • 2013-07-25
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-27
    • 2018-11-04
    相关资源
    最近更新 更多