2014-02-13 48 views
2

我已經編寫了以下函數,該函數在文本框中的每個按下鍵事件時觸發。這個想法是讓用戶輸入特殊字符(西班牙語動詞綴合測試應用的重音元音)。當光標位於輸入文本的末尾時,它可以很好地工作,但如果用戶試圖返回並在控件中間編輯一個字母,特殊字符仍會出現在最後。我知道這是因爲我使用的是AppendText,但我看不到任何像InsertText這樣的插入文本的插入點。什麼是正確的方法來做到這一點?捕捉EVT_KEY_DOWN後在光標處添加文本(不在行尾)

def SpecialChars(self, e): 
    vowels = {65: 225, 69: 233, 73: 237, 79: 243, 85: 250} 
    key = e.GetUniChar() 
    if self.last_key_down == 'accent' and key in vowels.keys(): 
     self.answer_txt.AppendText(unichr(vowels[key])) 
     self.last_key_down = 'none' 
    elif key == 39: 
     self.last_key_down = 'accent'   
    else: 
     self.last_key_down = 'none' 
     e.Skip()    

回答

0

解決了它。 TextCtrl.WriteText()正是我所需要的。

0

試試這個方法:

self.answer_txt.SetInsertionPoint(3) 
self.answer_txt.Replace(3,3,"a") 
+0

我想我不得不使用'SetInsertionPoint'但'WriteText'做什麼,我需要。在問這個問題之前,不知道我錯過了它。 –