我一直在研究一个简单的textctrl项目,以便更多地了解wxpython,我遇到了一个小路障。我正在制作一个简单的代码编辑器,我目前正致力于语法高亮。一切正常,除非因为我的textctrl绑定到一个事件:
self.status_area.Bind(wx.EVT_CHAR, self.onKeyPress)
我在该定义中有代码:
def onKeyPress (self, event):
Line = self.status_area.GetValue()
它将不再允许用户输入任何字母。我可以删除并创建一个没有任何问题的新行,但如果我输入“hello”,则不会显示任何内容。在调试我的代码时,我知道它运行在onKeyPress()和里面的代码,如果我将代码更改为:
def onKeyPress (self, event):
event.Skip()
它会正常工作。我试图将正常的文本编辑器工作重新编码到onKeyPress()中,但它开始变得太笨重了。任何有关此事的帮助将不胜感激。
答案 0 :(得分:2)
尝试EVT_TEXT
而不是EVT_CHAR
。在我的解决方案中,我在event.Skip()
答案 1 :(得分:2)
创建textctrl
self.text_ctrl = wx.TextCtrl(self.panel_1, -1, "some thing", style=wx.TE_MULTILINE | wx.TE_RICH2 )
绑定
self.Bind(wx.EVT_TEXT, self.ON_Write, self.text_ctrl)
现在定义:
def ON_Write(self, event):
line = self.text_ctrl.Value