我在我写的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()
进行调试。它是正确的。我不知道出了什么问题。有任何建议吗?
答案 0 :(得分:0)
固定。 在AppeInText之前为GetInsertionPoint()命名另一个变量。否则,它将获得文件的结尾。