2016-11-25 91 views
0

我在PythonwxPython上都很新穎。無論如何,在遵循官方教程,他們解釋瞭如何做一個基本的文本編輯器之後,我決定繼續編寫一個真正的文本編輯器。如何檢測鼠標點擊自定義wx.Panel?

現在,我的文本編輯器由一個MainWindow(從wx.Frame繼承),又包含一個Notebook(從wx.Notebook繼承),又包含幾個標籤(自定義類從wx.Panel繼承)的。

如果我沒有誤解,可以通過Bind()函數檢測wxPython中的事件並將其綁定到特定對象。

這裏是我的自定義面板類:

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社區版2016.2.3,Python 3.5.2和wxpython 3.0.2。

回答

1

事件實際上正在被捕獲,但僅限於標籤的非常薄的邊界。

通過將事件處理函數放在Notebook類中解決。

相關問題