2011-08-17 46 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 
相關問題