我编码使用wxWidgets库的某些Windows应用程序,我已经被困在一些有趣的事情在一个有趣的错误:处理wxWidgets的事件
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的默认键盘事件处理?
在此先感谢。
为什么不使用'wx.WXK_RETURN'?并尝试将'wx.PROCESS_ENTER'添加到树形控件的style参数上? (注意,即时通讯不知道要么工作...但也许..) –
可悲的是,它没有 – user1658903
你可以发布一个完整的(但简短!)代码示例?包括应用程序设置和框架布局。 ..多数民众赞成在任何人都会真正尝试和复制你的问题的唯一方法:) –