Как выделить определенные слова в текстовом Tk () - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь дать признанные предложения в текстовом 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с розовыми цветами и т.д .... Но в моем выводе все предложения окрашены в красный цвет.

1 Ответ

1 голос
/ 04 июня 2019

Я полагаю, ваш 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...