wxPython绑定问题

时间:2011-02-04 08:24:53

标签: python events binding wxpython

我正在使用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)

2 个答案:

答案 0 :(得分:2)

当您开始拖动时,请拨打CaptureMouse以将鼠标锁定到您正在拖动的窗口。

答案 1 :(得分:0)

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