Как мога да открия щракване с мишката върху персонализиран 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