我正在尝试在Text Tk()中给出公认的句子。我想根据标签上的某些标记用不同的颜色突出显示。我正在将模型结果部署到GUI。模型输出的文本文件格式如下:
# 1.0000
This B-LOC
is I-LOC
example I-LOC
of E-LOC
my O
data O
format O
. O
In O
this B-ORG
place E-ORG
, O
characters O
of O
my O
language O
is B-PNAME
applied E-PNAME
. O
And S-PNAME
help O
Me. O
这是代码示例。
if l_list[i] == "S-PNAME" or "B-PNAME" or "I-PNAME" or "E-PNAME":
self.output.update()
self.output.insert(END,s_list[i])
self.output.config(foreground='red')
elif l_list[i] == "S-ORG" or "B-ORG" or "I-ORG" or "E-ORG":
self.output.update()
self.output.insert(END,s_list[i])
self.output.config(foreground='pink')
else:
self.output.update()
self.output.insert(END,s_list[i])
我想用红色的P-NAME标签,粉红色的LOC标签给令牌着色....但是在我的输出中,所有句子都被着色为红色。
答案 0 :(得分:1)
我假设您的self.output
是文本小部件。当前,您只是通过调用self.output.config(foreground=...)
来修改小部件中所有文本的前景。
要突出显示不同文本的颜色,您需要为插入的文本设置tag
,然后使用tag_config
来配置每个标签的颜色。
import tkinter as tk
root = tk.Tk()
text = tk.Text(root)
text.pack()
text.insert(tk.INSERT,"This is a red message\n","red")
text.insert(tk.INSERT,"This is a green message\n","green")
text.insert(tk.INSERT,"This is a blue message\n","blue")
text.tag_config("red", foreground="red")
text.tag_config("green", foreground="green", relief="sunken",borderwidth=2)
text.tag_config("blue", foreground="blue", underline=1)
root.mainloop()