Python textctrl setstyle无法正确读取插入点

时间:2011-06-14 20:46:54

标签: python textctrl

我在我写的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()进行调试。它是正确的。我不知道出了什么问题。有任何建议吗?

1 个答案:

答案 0 :(得分:0)

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