如何在 Tkinter 中获取可滚动画布上的坐标?
tkinterpythongui-programming更新于 2025/7/18 19:24:17
画布小部件有两个坐标系:(a)窗口坐标系和(b)画布坐标系。窗口坐标系始终从窗口最左角 (0,0) 开始,而画布坐标系指定项目在画布上的实际位置。
要将窗口坐标系转换为画布坐标系,我们可以使用以下两种方法,
canvasx(event.x) canvas(event.y)
如果我们考虑窗口坐标系的情况,则鼠标事件仅发生在窗口坐标系中。我们可以将窗口坐标转换为画布坐标系。
示例
在此应用程序中,我们将获取鼠标指针在画布小部件内的位置。
# 导入所需的库
from tkinter import *
# 创建 tkinter 框架或窗口的实例
win = Tk()
# 设置窗口的大小
win.geometry("700x350")
# 创建画布小部件
canvas = Canvas(win)
canvas.pack()
def on_button_pressed(event):
start_x = canvas.canvasx(event.x)
start_y = canvas.canvasy(event.y)
print("start_x, start_y =", start_x, start_y)
def on_button_motion(event):
end_x = canvas.canvasx(event.x)
end_y = canvas.canvasy(event.y)
print("end_x, end_y=", end_x, end_y)
# 将画布与鼠标按钮绑定
canvas.bind("<Button-1>", on_button_pressed)
canvas.bind("<Button1-Motion>", on_button_motion)
# 在窗口中添加标签小部件
Label(win, text="移动鼠标指针并单击" "画布上的任意位置").pack()
win.mainloop()
输出
运行上述代码将显示一个窗口。
如果我们移动鼠标指针并点击画布上的任意位置,那么它将在控制台上打印指针的相对坐标。
start_x, start_y = 340.0 159.0
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/
打印
下一节:在 Tkinter TreeView 中删除和编辑项目 ❯❮ 上一节:Tkinter 中 widget.rowconfigure 或 widget.grid_rowconfigure 哪个正确?

