如何在自定义wx.Panel上检测鼠标单击?

时间:2016-11-25 16:51:14

标签: python-3.x event-handling wxpython mouseevent

我在PythonwxPython都很新。无论如何,在按照官方教程解释如何编写基本文本编辑器之后,我决定继续编写一个真正的文本编辑器。

现在,我的文字编辑器由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") 函数检测 <name>WSO2_CARBON_DB</name> <name>WSO2AM_DB</name> <name>WSO2AM_STATS_DB</name> <name>WSO2_MB_STORE_DB</name> <name>WSO2_METRICS_DB</name> 中的事件并将其绑定到特定对象。

这是我的自定义面板类:

L" "

Editor

我希望能够检测到标签本身的右键单击(例如,我可以打开菜单或只是为了测试wxPython函数而打印一些东西)。但是,用鼠标单击不会打印任何内容。知道为什么吗?

顺便说一句,我在ArchLinux上,使用PyCharm Community Edition 2016.2.3,Python 3.5.2和wxpython 3.0.2。

1 个答案:

答案 0 :(得分:1)

事件实际上已被捕获,但仅限于标签的非常薄的边框。

通过将事件处理程序放在Notebook类中来解决。