我在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")
函数检测 <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" "
我希望能够检测到标签本身的右键单击(例如,我可以打开菜单或只是为了测试wxPython函数而打印一些东西)。但是,用鼠标单击不会打印任何内容。知道为什么吗?
顺便说一句,我在ArchLinux上,使用PyCharm Community Edition 2016.2.3,Python 3.5.2和wxpython 3.0.2。
答案 0 :(得分:1)
事件实际上已被捕获,但仅限于标签的非常薄的边框。
通过将事件处理程序放在Notebook
类中来解决。