我正在使用 wxWidgets 库编写一些 Windows 应用程序,并且我坚持了一些有趣的事情:
def HandleDblclick (self, event):
self.ItemActivation (event.GetItem ())
def HandleKeydown (self, event):
keyc = event.GetKeyCode ()
if keyc == 13:
self.ItemActivation (event.GetItem ())
elif keyc == 32:
self.ItemSelection (event.GetItem ())
self.sbar.SetStatusText (str (keyc) + " was pressed.")
def HandleRclick (self, event):
self.ItemSelection (event.GetItem ())
(是的,它是 Python)。ItemActivation() 和 ItemSelection() 做了所有的脏活。但只有当我按下鼠标按钮时。当我输入一个密钥时,我得到以下输出:
File "C:\Python27\lib\site-packages\wx-2.8-msw-unicode\wx\_controls.py", line 5315, in GetItemPyData
return _controls_.TreeCtrl_GetItemPyData(*args, **kwargs)
wx._core.PyAssertionError: C++ assertion "param" failed at ..\..\src\msw\treectrl.cpp(1083) in wxTreeCtrl::SetItemData(): failed to change tree items data
我正在尝试编写 TreeCtrl。有趣的是,尽管树扩展错误(输入键),但项目选择(空格)根本不起作用。
发生了什么事,为什么?我认为 wxWidgets 尝试处理该事件两次,一次使用他们的默认处理程序,两次使用我的。但如果我是正确的,如何禁用 wx.TreeCtrl 的默认键盘事件处理?
提前致谢。