关于wxPython中的TextCtrl响应失去焦点事件后不能再次编辑或出现不正常现象的解决办法
2015-10-04 15:27
781 查看
关于wxPython中的TextCtrl响应失去焦点事件后不能再次编辑或出现不正常现象的解决办法
关键字:EVT_KILL_FOCUS self.Bind( ) TextCtrl wxPython 失去焦点
不能再次编辑 event.Skip( )
本人最近用Python写一个小程序,发现如果在wxpython中将TextCtrl绑定EVT_KILL_FOCUS事件后,一开始的确能够响应,但响应之后,该TextCtrl(也即是文本框)不能再次编辑,但可以选中,同时也不会再度响应该事件,表现为鼠标不正常与键盘不能输入响应过事件之后的TextCtrl。为此在国内查找了很久,都没有关于这类型的全面解决办法,后来在外国网站搜到了同样问题,然后得到了启发。
例如,写一个文本框绑定失去焦点事件是这样写的:
self.TextCtrl.Bind(wx.EVT_KILL_FOCUS,self.onKillFocus)
不能写成
self.Bind(wx.EVT_KILL_FOCUS,self.onKillFocus,self.TextCtrl)
因为失去焦点事件是非命令事件(non-command event)
像下面这种写法是不会得到事件响应的。
请参考这里http://wiki.wxpython.org/self.Bind%20vs.%20self.button.Bind
然后其实在wx.Bind方法中传递了一个默认隐藏的参数:event,它就是一个Event对象,Event里面有一个方法是Skip(),Skip()方法是什么,这里引用别人的解释,“event.skip()的作用是告诉MainLoop继续处理这个消息,而不是在当前handler处理完了就中断了,就是说如果其他的parent的窗口或者paragate窗口还有相应的handler时,也应该调用他们。”
不知道上述说法是否官方的,正确的,我也没有深究,反正与我出现的现象是有出入的。我觉得理解为跳过事件,让事件停止,重新等待响应更好。
然后在onKillFocus方法中最后加上这句,像下面这样就可以了。
本文为原创文章,由于本人理解不够充分,文章可能会出现不足或错误,恳请各位留言指正
关键字:EVT_KILL_FOCUS self.Bind( ) TextCtrl wxPython 失去焦点
不能再次编辑 event.Skip( )
本人最近用Python写一个小程序,发现如果在wxpython中将TextCtrl绑定EVT_KILL_FOCUS事件后,一开始的确能够响应,但响应之后,该TextCtrl(也即是文本框)不能再次编辑,但可以选中,同时也不会再度响应该事件,表现为鼠标不正常与键盘不能输入响应过事件之后的TextCtrl。为此在国内查找了很久,都没有关于这类型的全面解决办法,后来在外国网站搜到了同样问题,然后得到了启发。
例如,写一个文本框绑定失去焦点事件是这样写的:
self.TextCtrl.Bind(wx.EVT_KILL_FOCUS,self.onKillFocus)
不能写成
self.Bind(wx.EVT_KILL_FOCUS,self.onKillFocus,self.TextCtrl)
因为失去焦点事件是非命令事件(non-command event)
像下面这种写法是不会得到事件响应的。
请参考这里http://wiki.wxpython.org/self.Bind%20vs.%20self.button.Bind
然后其实在wx.Bind方法中传递了一个默认隐藏的参数:event,它就是一个Event对象,Event里面有一个方法是Skip(),Skip()方法是什么,这里引用别人的解释,“event.skip()的作用是告诉MainLoop继续处理这个消息,而不是在当前handler处理完了就中断了,就是说如果其他的parent的窗口或者paragate窗口还有相应的handler时,也应该调用他们。”
不知道上述说法是否官方的,正确的,我也没有深究,反正与我出现的现象是有出入的。我觉得理解为跳过事件,让事件停止,重新等待响应更好。
然后在onKillFocus方法中最后加上这句,像下面这样就可以了。
def onKillFocus(self,event): ..... 事件执行代码 ..... event.Skip() #最后加上这句就可以正常再次响应事件了
本文为原创文章,由于本人理解不够充分,文章可能会出现不足或错误,恳请各位留言指正
相关文章推荐
- Python加载csv文件的两种方式
- 萌妹子Python入门指北(一)
- [python]学习笔记6-python数字
- 《机器学习实战》笔记之八——预测数值型数据:回归
- Eclipse和PyDev搭建完美Python开发环境(Windows篇)
- 说说Python程序的执行过程
- 出现No module named numpy的解决办法
- Python-__builtin__与__builtins__的区别与关系
- 用python2.7,采集新浪博客
- 利用python脚本自动下载ICML会议接受的文章
- 验证码——python去除干扰线
- python之正则表达式的学习
- python基础课程_学习笔记15:标准库:有些收藏夹——fileinput
- 使用python来调试串口
- Python Mixin混入的使用方法
- python基础7之闭包与装饰器
- 八大排序算法的Python实现
- 大家早安,唠叨的兔几出现了,继续话痨python
- 6.Python深入_内存管理
- 基于python3,抓取韩寒博客文章