You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python turtle库中将鼠标点击的x、y坐标赋值给变量

Python turtle库点击坐标赋值给自定义变量实现方案

turtle的点击事件回调属于异步触发逻辑,无法直接通过return将坐标返回给外层变量,可以通过以下2种常用方式实现存储:

方案1:使用全局变量(最简实现)

直接在回调函数内通过global声明全局变量,完成赋值:

import turtle

# 提前定义全局变量用于存储坐标
click_x = None
click_y = None

def get_mouse_click_coor(x, y):
    global click_x, click_y
    # 坐标赋值给全局变量
    click_x = x
    click_y = y
    # 只接收一次点击就解绑事件,不需要多次点击可以保留这行
    turtle.onscreenclick(None)
    # 需使用坐标的后续逻辑可以直接在这里调用
    turtle.goto(click_x, click_y)
    turtle.dot(15, "blue")
    print(f"已存储点击坐标:x={click_x}, y={click_y}")

turtle.onscreenclick(get_mouse_click_coor)
turtle.mainloop()

后续任意位置都可以直接读取click_x、click_y变量使用。

方案2:使用可变对象存储(避免全局变量)

如果不想使用全局变量,可以用列表、字典这类可变对象存储坐标,不需要额外声明global:

import turtle

# 用列表存储坐标,列表为可变对象,函数内部可以直接修改
click_coor = [None, None]

def get_mouse_click_coor(x, y):
    click_coor[0] = x
    click_coor[1] = y
    turtle.onscreenclick(None)
    print(f"已存储点击坐标:x={click_coor[0]}, y={click_coor[1]}")

turtle.onscreenclick(get_mouse_click_coor)
turtle.mainloop()

注意事项

  • 不要尝试在turtle.mainloop()之后读取坐标值,该方法是阻塞的事件循环,只有窗口关闭才会继续执行后续代码,此时坐标已经失去使用意义
  • 所有需要用到点击坐标的业务逻辑,建议直接写在回调函数内部,或者通过turtle.ontimer()定时轮询判断坐标是否完成赋值

内容的提问来源于stack exchange,提问作者White Owl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 11:54:05