tag_configure
предназначен только для настройки tag
, но вы должны назначить tag
слову в тексте, чтобы изменить его цвет.
Вы можете использовать text.tag_add(tag_name, text_start, text_end)
для добавления тега к выделенному тексту.
Проблема может быть в том, как найти text_start
и text_end
для слова или строки.
Tkinter имеет специальные значения, такие как end
, insert
, wordstart
и т. Д.
Я различаю теги, чтобы изменить цвет для последней строки и для последнего слова. Это показывает разные ситуации.
Я использую -2c
, чтобы пропустить последний Return
, но в другой системе может потребоваться только -1c
. Без -2c
он будет использовать цвет, когда вы помещаете новые символы в новую строку.
Если вы поставите пробел после последнего слова в строке, он не найдет последнее слово.
Если вы измените порядок tag_configure
, он может не работать.
import tkinter as tk
# --- functions ---
def on_return(event):
# -2c (-2chars) to skip `Return`
# red color for last line
text.tag_add('red_fg', 'end-2c linestart', 'end-2c')
# blue color for last word
text.tag_add('blue_fg', 'insert-2c wordstart', 'end-2c')
# --- main ---
root = tk.Tk()
text = tk.Text(root)
text.pack()
# tag's order can be important
text.tag_configure("red_fg", foreground="red")
text.tag_configure("blue_fg", foreground="blue")
root.bind("<Return>", on_return)
root.mainloop()
effbot.org: Текст
Tcl / Tk: Текстовые индексы
TkDocs: Текст -> Позиции и индексы текста