2016-11-25 2 views
0

나는 PythonwxPython에서 꽤 새로운입니다. 어쨌든, 기본 텍스트 편집기를 수행하는 방법을 설명하는 공식 자습서를 수행 한 후에는 실제 텍스트 편집기를 작성하기로 결정했습니다. 어떻게 사용자 정의 wx.Panel에서 마우스 클릭을 감지 할 수 있습니까?

지금, 내 텍스트 편집기를 차례로 Notebook 차례로 여러 을 (사용자 정의 클래스가 wx.Panel에서 상속) 포함하는 ( wx.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 클래스에 넣음으로써 해결되었습니다.

관련 문제