Tkinter的动态变化经常性的字符串文本颜色在一个文本框(Tkinter dynamically

2019-09-18 01:00发布

我有一个Tkinter的文本框设置为显示文件的内容。 从其中一个例子线将如下所示:

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

我想要做的是有包含单词“成功”有它的文本颜色变为蓝色的任何行。 请注意,我需要这是动态的,因为这个词可以找到数百次在一个文件中,并没有预测它将会方式。 这是我使用的输出文件内容到文本框中的代码。 工作正常。

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")`

`

Answer 1:

您需要配置一个标签,并添加文字到最后时指定该标签。 这应该工作(虽然未测试):

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_add之前tag_config ,我相信应该是相反的,它的工作。



文章来源: Tkinter dynamically changing text colour of recurring strings in a textbox