wxPython 在 TextCrl 中搜索单词

wxPython search word in TextCrl

我有一个用 wxPython 编写的简单的迷你记事本程序。 文本是用 TextCtrl 写的:

  self.rtb = wx.TextCtrl(self, ID_RTB, size=wx.Size(400,200),
                          style=wx.TE_MULTILINE | wx.TE_RICH2)

我想实现一个搜索功能,用户输入一个词,然后我在 TextCtrl 中突出显示它。

我的方法是:

    def SearchIt(self,e):
    for line in self.rtb: 
        if self.text in line:
            print line   #will be changed to highlight when it will work

但是我得到一个错误:

TypeError: 'TextCtrl' object is not iterable

有什么解决办法的建议吗?现在更改 TextCtrl 太复杂了。是否有另一种方法可以在 TextCtrl 中搜索单词,或者是否有一种方法可以将 TextCtrl 中的文本转换为另一种数据结构以供搜索?

您正在尝试迭代 textCtrl,而不是其中的行。你可以这样做,

def SearchIt(self,e):
    for i in range(self.rtb.GetNumberOfLines()):
        line = self.rtb.GetLineText(i)
        if self.text in line:
            print(line)