Как я могу обработать событие mouseMiddleDrag в PythonCard? - PullRequest
1 голос
/ 27 мая 2009

Я хотел бы использовать среднюю кнопку мыши для перетаскивания изображения в приложении, написанном на Python, и использовать PythonCard / wxPython для графического интерфейса.

В последней версии PythonCard реализовано только событие «перетаскивание левой кнопкой мыши», и я пытаюсь изменить PythonCard для обработки «перетаскивания средней кнопки мыши».

Вот соответствующий код из Lib \ site-packages \ PythonCard \ event.py:

class MouseMoveEvent(MouseEvent, InsteadOfTypeEvent):
    name = 'mouseMove'
    binding = wx.EVT_MOTION
    id = wx.wxEVT_MOTION

    def translateEventType(self, aWxEvent):
        if aWxEvent.Dragging():
            return MouseDragEvent.id
        else:
            return self.id

class MouseDragEvent(MouseMoveEvent):
    name = 'mouseDrag'
    id = wx.NewEventType()

class MouseMiddleDragEvent(MouseMoveEvent): #My addition
    name = 'mouseMiddleDrag'
    id = wx.NewEventType()

Мое дополнение не работает. Что я могу сделать вместо этого? Есть ли конкретный метод wxPython, который я мог бы использовать, чтобы обойти PythonCard?

1 Ответ

1 голос
/ 28 мая 2009

Оказывается, событие mouseDrag активно независимо от того, какая кнопка мыши нажата. Чтобы отфильтровать среднюю кнопку мыши, необходимо вызвать метод MiddleIsDown () из MouseEvent .

def on_mouseDrag( self, event ):       
    do_stuff()

    if event.MiddleIsDown():
        do_other_stuff()
...