【问题标题】:Get mouse position in sizer? wxpython在sizer中获取鼠标位置? wxpython
【发布时间】:2011-11-22 03:22:17
【问题描述】:

可以使用 wxpython 获取鼠标位置

event.GetPosition()

但是,是否可以在 sizer 中获取鼠标的位置?即使在扩展的 sizer 中这也能工作吗?

谢谢。

【问题讨论】:

  • 你想完成什么?为什么需要相对于 sizer 边缘的鼠标位置?
  • 嗯,这很难解释,但基本上可以,当用户点击sizer上的某个地方时,然后在那个sizer中在那些鼠标坐标处创建一个图像。

标签: python wxpython


【解决方案1】:

sizer 中的 X,Y 位置与该sizer 所属的窗口完全相同,假设sizer 是分配给该窗口的sizer。如果你有嵌套的 sizer,那么你可以使用 sizer.GetPosition 和 sizer.GetSize 来确定位置是否在嵌套的 sizer 内。

但是我猜想知道鼠标在 sizer 中的位置不会很有用。您可能想知道鼠标位置在 sizer 中的哪个项目,例如 HitTest 类型的方法。您可以使用 sizer.GetChildren() 方法实现类似的东西并迭代其项目(它们是 wx.SizerItem 对象)并查看项目的位置和大小以找到其中包含点的项目。如果该项目是一个 sizer,那么您可以递归地下降到该 sizer 并执行相同的操作,直到您在所需的点找到叶子项目。

【讨论】:

    【解决方案2】:

    Sizer 不适用于绝对定位。它们用于相对定位。 Sizer 最擅长使您的布局在多个平台和主题上看起来正确。如果您真的希望能够在特定 x-y 坐标处插入内容,请不要使用 sizer。

    【讨论】:

      猜你喜欢
      • 2021-06-09
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 1970-01-01
      • 2016-07-26
      • 2018-10-26
      • 2015-10-22
      相关资源
      最近更新 更多