【问题标题】:wxPython Binding ProblemwxPython绑定问题
【发布时间】:2011-02-04 08:24:52
【问题描述】:

我正在使用 wxPython 事件绑定来制作拖动算法。但是我遇到了一个问题,当鼠标不在我的框架上时,事件不会触发。

这成为一个问题,当拖动时看到鼠标似乎离开了框架(就像用户快速移动它一样),框架忽略更新它的位置。

有没有办法改变绑定,即使鼠标不在相关框架上也能触发?

片段:

    self.Bind(wx.EVT_LEFT_DOWN, self.relative_mouse_position)
    self.Bind(wx.EVT_LEFT_UP, self.wid_unbind)

片段:

def relative_mouse_position (self, event):
    cx, cy = wx.GetMousePosition()
    x, y = self.GetPosition()

    RelX = cx - x
    RelY = cy - y

    self.Bind(wx.EVT_MOTION, lambda event: self.wid_drag(event, RelX, RelY))


def wid_drag (self, event, RelX, RelY):
    cx, cy = wx.GetMousePosition()

    x = cx - RelX
    y = cy - RelY

    if x < 0:
        x = 0

    if y < 0:
        y = 0

    self.SetPosition((x, y))

def wid_unbind (self, event):
    self.Unbind(wx.EVT_MOTION)

【问题讨论】:

    标签: python events binding wxpython


    【解决方案1】:

    当您开始拖动时,调用CaptureMouse 将鼠标锁定在您正在拖动的窗口上。

    【讨论】:

      【解决方案2】:

      未测试但可能绑定,EVT_LEAVE_WINDOW 在鼠标在窗口外时触发。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多