Как определить щелчок мышью на пользовательской панели wx.Panel?

Я новичок как в Python, так и в wxPython. Как бы то ни было, следуя официальному руководству, в котором объясняется, как сделать базовый текстовый редактор, я решил пойти дальше и написать настоящий текстовый редактор.

Теперь мой текстовый редактор состоит из MainWindow (наследуемого от wx.Frame), который, в свою очередь, содержит Notebook (наследуемый от wx.Notebook), который, в свою очередь, содержит несколько вкладок (пользовательский класс, наследуемый от wx.Panel).

Если я правильно понял, события в wxPython можно обнаружить и привязать к конкретным объектам через функцию Bind().

Вот мой пользовательский класс панели:

class TabContent(wx.Panel) :
    def __init__(self, parent) :
        # Calls the constructor for wx.Panel
        wx.Panel.__init__(self, parent = parent, id = wx.ID_ANY)

        # Creates a vertical sizer
        sizer = wx.BoxSizer(wx.VERTICAL)

        # Creates an empty multiline wx.TextCtrl
        textArea = wx.TextCtrl(self, style = wx.TE_MULTILINE)

        # Adds the text area to the sizer
        sizer.Add(textArea, 1, wx.EXPAND | wx.ALL, 2)

        # Sets the previously created sizer as this panel's sizer
        self.SetSizer(sizer)

        # Sets up events
        self.Bind(wx.EVT_RIGHT_DOWN, self.onMouseLeftClicked)

    def onMouseLeftClicked(self, event) :
        print("Left button of the mouse was clicked\n")

Редактор

Я хотел бы иметь возможность обнаруживать щелчки правой кнопкой мыши на самой вкладке (например, я мог бы открыть меню или просто что-то напечатать для тестирования функций wxPython). Однако щелчок мышью ничего не печатает. Есть идеи, почему?

Кстати, я на ArchLinux, использую PyCharm Community Edition 2016.2.3, Python 3.5.2 и wxpython 3.0.2.


person Michael    schedule 25.11.2016    source источник


Ответы (1)


Событие действительно ловилось, но только на очень тонкой границе вкладки.

Решается помещением обработчика событий в класс Notebook.

person Michael    schedule 25.11.2016