1

我一直在研究一个简单的 textctrl 项目以更熟悉 wxpython,但我遇到了一个小障碍。我正在制作一个简单的代码编辑器,目前正在处理语法高亮。一切正常,除了因为我的 textctrl 绑定到一个事件:

self.status_area.Bind(wx.EVT_CHAR, self.onKeyPress)

我在该定义中有代码:

def onKeyPress (self, event):
    Line = self.status_area.GetValue()

它将不再允许用户输入任何字母。我可以毫无问题地删除并创建一个新行,但如果我输入“你好”,什么都不会出现。在调试我的代码时,我知道它通过 onKeyPress() 和里面的代码运行,如果我将代码更改为:

def onKeyPress (self, event):
    event.Skip()

它会正常工作。我试图将普通文本编辑器的工作重新编码到 onKeyPress() 中,但它开始变得过于庞大。任何有关此事的帮助将不胜感激。

4

2 回答 2

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
于 2013-04-03T06:24:43.890 回答
2

尝试EVT_TEXT而不是EVT_CHAR。在我的解决方案中,我在之后添加了它event.Skip()

于 2011-08-18T01:33:42.230 回答