2016-11-25 5 views
0

私はPythonwxPythonの両方でかなり新しいです。とにかく、基本的なテキストエディタを行う方法を説明する公式のチュートリアルに従った後、私は先に進んで実際のテキストエディタを書くことにしました。順番にいくつかのタブwx.Panelから継承したカスタムクラス)が含まれていカスタムwx.Panelのマウスクリックを検出するにはどうすればよいですか?

さて、私のテキストエディタは、順番に(wx.Notebookから継承)Notebookが含まれています(wx.Frameから継承)MainWindow、から構成されています。

私が誤解していない場合、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関数のテストのために)。ただし、マウスでクリックしても何も印刷されません。どんな考え?

ところで、PyCharm Community Edition 2016.2.3、Python 3.5.2、wxpython 3.0.2を使用してArchLinuxを使用しています。

答えて

1

イベントは実際には捕捉されていましたが、タブの非常に細い境界線でのみ検出されました。

イベントハンドラをNotebookクラスに入れて解決しました。

関連する問題