如何在Tkinter中获取可滚动画布上的坐标?

如何在Tkinter中获取可滚动画布上的坐标?

画布小部件有两个坐标系:(a)窗口坐标系和(b)画布坐标系。窗口坐标系始终从窗口的左上角(0,0)开始,而画布坐标系指定项目实际放置在画布上的位置。

要将窗口坐标系转换为画布坐标系,可以使用以下两种方法,

canvasx(event.x)
canvas(event.y)
Python

如果我们考虑窗口坐标系的情况,则鼠标事件仅发生在窗口坐标系中。我们可以将窗口坐标转换为画布坐标系。

示例

在此应用程序中,我们将获得画布小部件内鼠标指针的位置。

# 导入所需的库
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小部件
Label(win, text="移动鼠标指针并单击在画布的任何位置").pack()

win.mainloop()
Python

输出

运行上述代码将显示一个窗口。

如何在Tkinter中获取可滚动画布上的坐标?

如果我们移动鼠标指针并在画布上的任何位置单击,它将在控制台上打印指针的相对坐标。

start_xstart_y = 340.0 159.0
Python

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册