2011-08-17 31 views
1

我一直在研究一个简单的textctrl项目,以更熟悉wxpython,我碰到了一个小路障。我正在做一个简单的代码编辑器,而我目前正在研究语法突出显示。一切工作只是罚款,因为我有我的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

这固定我的问题,谢谢你这么多。这是一个非常好的论坛。我不需要添加event.skip()。 – drfrev

+1

如果它解决了您的问题,请不要忘记接受答案。您可以通过点击答案旁边的复选标记来做到这一点。 – Bogdan

+0

什么修复了这个问题,我什么都看不到:( – 2013-01-05 17:16:36

回答

2

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

+0

)只要你在必要时调用它,在事件处理函数中调用'event.Skip()'无关紧要。 – FogleBird

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 
相关问题