如何在wxPython中编辑单词的颜色而不生成EVT_文本?

2024-06-01 03:37:11 发布

您现在位置:Python中文网/ 问答频道 /正文

这是两部分问题的一部分(另一部分是here

所以我正和wxPython和PyEnchant合作,试图让一些奇特的功能得以实现。具体地说,我希望我的文本控件更改拼写错误的单词的颜色。如果我把下面的代码绑定到一个按钮上,我可以这样做。(其中inputwx.TextCtrl

 chkr = SpellChecker("en_US",self.input.GetValue())
 words = self.input.GetValue().split()
 wrongWords = [err.word for err in chkr]
 self.input.ChangeValue("")
 for word in words:
     if not word in wrongWords:
         self.input.SetDefaultStyle(wx.TextAttr(wx.BLACK))
         self.input.AppendText(word+" ")
     else:
         self.input.SetDefaultStyle(wx.TextAttr(wx.RED)) 
         self.input.AppendText(word+" ")

这正是我想要的,只是我不想把它绑定到按钮上。在

这就是第二个问题出现的地方。我希望它在用户完成编辑后自动发生。您可以看到另一个问题来全面讨论这意味着什么,但是在这个问题的范围内,它意味着我必须在不生成EVT_TEXT事件的情况下执行上述操作。在

ChangeValue()SetValue()相同,但它不生成{},那么有没有类似的函数与{}相同呢?否则,当AppendText()生成时,是否有方法抑制EVT_TEXT,或者确定事件是否来自{}?提前谢谢。在

编辑:我已经通过使用Unbind()来解决这个问题,但是如果有人能找到一个更好的方法,我仍然愿意接受


Tags: inselfforinput按钮worderrwords