1

我在我编写的 GUI 中使用 python textctrl。在我阅读了几个文件后,我将文件的内容发布在 textctrl 中。由于它们都采用相似的格式,我尝试为前几个字符着色以标记每个文件输出的开始。我所做的是以下内容:

for file in self.dir:
    f = open(file, 'r')
    strInfo = f.read()

    if self.dir.index(file) == 0:
        self.textctrl.SetValue(strInfo)
        self.textctrl.SetStyle(self.textctrl.GetInsertionPoint(),
                               self.textctrl.GetInsertionPoint()+22, wx.TextAttr("RED", "YELLOW"))
    else:
        self.textctrl.AppendText(strInfo)
        self.textctrl.SetStyle(self.textctrl.GetInsertionPoint(), 
                               self.textctrl.GetInsertionPoint()+22, wx.TextAttr("RED", "YELLOW"))

    f.close()

基本上,这段代码应该为每个文件输出的前 22 个字符着色。
但它不像我预期的那样工作。我测试了 self.dir 列表中的 3 个文件。它将第一个文件输出的前 22 个字符着色。然后对于后面附加的其他两个文件输出,它为第三个文件的整个部分着色,但对第二个文件输出不着色。

我打印了GetInsertionPoint()要调试的。它是正确的。我不知道出了什么问题。有什么帮助建议吗?

4

1 回答 1

0

固定的。在 AppendText 之前为 GetInsertionPoint() 命名另一个变量。否则,它将获得文件的结尾。

于 2011-06-15T15:31:59.603 回答