如何在PythonCard中处理mouseMiddleDrag事件?

时间:2009-05-27 15:33:55

标签: python user-interface wxpython mouse pythoncard

我想使用鼠标中键在用Python编写的应用程序中拖动图像,并使用PythonCard / wxPython进行GUI。

最新版本的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()

我的添加不起作用。我该怎么做?是否有可用于绕过PythonCard的特定wxPython方法?

1 个答案:

答案 0 :(得分:1)

事实证明,无论按下鼠标上的哪个按钮, mouseDrag 事件都处于活动状态。要过滤鼠标中键,需要从 MouseEvent 中调用 MiddleIsDown()方法。

def on_mouseDrag( self, event ):       
    do_stuff()

    if event.MiddleIsDown():
        do_other_stuff()