Проблема связывания wxPython - PullRequest
1 голос
/ 04 февраля 2011

Я играю с привязками событий 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 ]

2 голосов
/ 21 февраля 2011

Когда вы начинаете перетаскивание, позвоните CaptureMouse, чтобы держать мышь заблокированной в окне, которое вы перетаскиваете.

0 голосов
/ 04 февраля 2011

Не проверено, но, вероятно, привязка, EVT_LEAVE_WINDOW для срабатывания, когда мышь находится за пределами окна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...