2016-11-25 2 views
0

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

Теперь мой текстовый редактор состоит из 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") 

Editor

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

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

ответ

1

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

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

Смежные вопросы