Tkinter:确定小部件相对于根窗口的位置

3 投票
1 回答
7461 浏览
提问于 2025-04-16 16:50

在tkinter中,鼠标滚轮事件只能绑定到根窗口上。因此,这个事件的位置也是相对于根窗口的位置。
对于一个画布的缩放操作,我想获取鼠标滚轮事件时光标在画布上的位置。为了计算这个位置,我想直接减去画布在根窗口中的位置。现在的问题是,我找不到画布在窗口中的位置。

我尝试了:
can.grid_bbox --> (0,0,0,0) ?
can.grid_info
can.grid_location
cget("offset")
pointerx

还有一些我记不起来的其他方法。总是找不到,能不能给我一点提示?

---编辑---
为了获取鼠标滚轮事件相对于画布的位置,这个方法似乎有效:

def on_mouse_wheel(self, event):
    xCan = event.x_root - self.can.winfo_rootx()
    yCan = event.y_root - self.can.winfo_rooty()

1 个回答

3

你想用 winfo_x 和 winfo_y 这两个方法来获取相对于父窗口的 x/y 位置。

撰写回答