捕获EVT_KEY_DOWN后,在光标处(不在行尾)添加文本

时间:2014-02-13 09:32:10

标签: python python-2.7 wxpython

我编写了以下函数,该函数在文本框中的每个按键事件处触发。这个想法是它允许用户输入特殊字符(西班牙语动词结合测试应用程序的重音元音)。当光标位于输入文本的末尾时,它可以正常工作,但如果用户尝试返回并在控件中间编辑一个字母,则特殊字符仍会显示在结尾处。我知道这是因为我正在使用AppendText但我看不到像InsertText这样的内容在不同的插入点插入文本。这样做的正确方法是什么?

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()            

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

尝试这种方式:

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