python-Tkinter动态更改文本框中重复出现的字符串的文本颜色

我将Tkinter文本框设置为显示文件的内容.示例行如下:

SUCCESS - Downloaded example.jpg
File was 13KB in size

我想做的是让包含“ SUCCESS”一词的任何行的文本颜色更改为蓝色.请注意,我需要使它具有动态性,因为在一个文件中可以找到数百个单词,并且无法预测其位置.
这是我用来将文件内容输出到文本框中的代码.哪个工作正常.

log = open(logFile, 'r')
while 1:
    line = log.readline()
    if len(line) == 0:
        break
    else:
        self.txtLog.insert(Tkinter.END, line)
        self.txtLog.insert(Tkinter.END, os.linesep)
log.close()

我试图像下面的示例行那样使用tag_add和tag_config,但无济于事.

 `self.txtLog.tag_add("success", "1.0", "1.8")
  self.txtLog.tag_config("success", foreground="blue")`

`

解决方法:

您需要配置标签,并在将文本添加到末尾时指定该标签.
这应该可以工作(尽管未经测试):

self.txtLog.tag_config("success", foreground="blue", font="Arial 10 italic")
log = open(logFile, 'r')
while 1:
    line = log.readline()
    if len(line) == 0:
        break
    else:
        tags = ("success",) if line.startswith("SUCCESS") else None
        self.txtLog.insert(Tkinter.END, line+os.linesep, tags)
log.close()

另外,我只是注意到您在tag_config之前使用了tag_add,我认为应该相反.

上一篇:在每个特定值后显示一个对话框android


下一篇:c#-包装和大量数据时TextBox性能不佳