【问题标题】:Add text at the cursor (not at end of line) after catching EVT_KEY_DOWN捕获 EVT_KEY_DOWN 后在光标处(而不是行尾)添加文本
【发布时间】:2014-02-13 09:32:09
【问题描述】:

我编写了以下函数,该函数在文本框中的每个按键事件时触发。这个想法是它允许用户输入特殊字符(西班牙语动词变位测试应用程序的重音元音)。当光标位于输入文本的末尾时,它可以完美运行,但是如果用户尝试返回并在控件中间编辑一个字母,则特殊字符仍会出现在末尾。我知道这是因为我正在使用 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()            

【问题讨论】:

    标签: python python-2.7 wxpython


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      试试这个方法:

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

      【讨论】:

      • 我在想我必须使用SetInsertionPointWriteText 可以满足我的需要。在问这个问题之前不知道我是怎么错过的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 2014-12-04
      • 2014-06-21
      • 1970-01-01
      • 2013-04-05
      相关资源
      最近更新 更多