在Sizer中获取鼠标位置?wxpython

1 投票
2 回答
902 浏览
提问于 2025-04-17 06:48

在wxpython中,我们可以通过

event.GetPosition()

来获取鼠标的位置。

但是,想知道在一个布局管理器(sizer)中能不能获取鼠标的位置?即使是在一个会扩展的布局管理器中,这样的方法也能用吗?

谢谢。

2 个回答

0

大小调整器(sizers)不适用于绝对定位,它们是为相对定位设计的。大小调整器在让你的布局在不同平台和主题上看起来更好时非常有效。如果你真的想要在特定的x-y坐标上放置东西,那就不要使用大小调整器。

3

在一个布局管理器(sizer)中,X和Y的位置和它所属于的窗口是完全一样的,前提是这个布局管理器是分配给那个窗口的。如果你有嵌套的布局管理器,你可以使用sizer.GetPosition和sizer.GetSize来判断某个位置是否在那个嵌套的布局管理器里面。

不过,我猜知道鼠标在布局管理器中的位置并不是特别有用。你可能更想知道鼠标指向了布局管理器中的哪个项目,就像一种碰撞检测的方法。你可以使用sizer.GetChildren()这个方法来实现类似的功能,遍历它的所有项目(这些项目是wx.SizerItem对象),然后查看每个项目的位置和大小,找到那个包含鼠标位置的项目。如果这个项目本身也是一个布局管理器,你就可以递归地进入那个布局管理器,重复这个过程,直到找到你想要的具体项目。

撰写回答