Теги позволяют определить форматирование. Тег добавляется с помощью метода add_tag() класса Text:
tag_add(tagName, index1, index2)
Первый параметр устанавливает имя тега, второй параметр - index1 указывает на начальный символ, с которого начинает применяться тег. Дополнительно (но необязательно) можно указать третий параметр, который устанавливает конечный символ, к которому применяется тег.
Для прикрепления тега к определенному тексту также можно использовать метод insert, который добавляет текст, и в качестве второго параметра передать тег или набор тегов, которые будут применяться к добавляемому тексту:
insert(index, text, tagName) insert(index, text, (tagName1, tagName2,...tagNameN))
С помощью метода tag_configure() для тега можно сконфигурировать стили.
tag_configure(имя_тега, стили)
Стили представляют параметры background, bgstipple, borderwidth, elide, fgstipple, font, foreground, justify, lmargin1, lmargin2, offset, overstrike, relief, rmargin, spacing1, spacing2, spacing3, tabs, tabstyle, underline и wrap, которым передаются некоторые значения.
Посмотрим на примере:
from tkinter import * root = Tk() root.title("METANIT.COM") root.geometry("250x200") editor = Text(wrap = "none") editor.pack(expand=1, fill=BOTH) editor.insert("1.0","Hello ") # создаем тег highlightline и прикрепляем его к символам 1.0 до 1.2 editor.tag_add("highlightline", "1.0", "1.2") # добавляем текст, к которому применяется тег highlightline editor.insert("end","World", "highlightline") editor.insert("end","\nHello All!") # устанавливаем стили тега highlightline editor.tag_configure("highlightline", background="#ccc", foreground="red", font="TkFixedFont", relief="raised") root.mainloop()
Здесь создается тег "highlightline", который прикрепляется сначала по 2-й символ в первой строке. Далее добавляется текст "World", к которму применяется данный тег. В конце конфигурируем тег, задавая его стилевые параметры:
Если в процессе работы программы тег стал не нужен, его можно удалить. Метод remove_tag() удаляет тег с определенных символов:
editor.tag_remove("highlightline", "1.0", "1.2")
В данном случае удаляем тег "highlightline" с символов с 0 по 2-й в первой строке.
Также можно вообще удалить тег со всех символов, к которым он применяется:
editor.tag_delete("highlightline")
Виджет Text позволяет добавление изображений и других виджетов.
Для добавления изображений применяется метод image_create:
from tkinter import * root = Tk() root.title("METANIT.COM") root.geometry("250x200") editor = Text() editor.pack(expand=1, fill=BOTH) python_img = PhotoImage(file="python_sm.png") editor.image_create("1.0", image=python_img) root.mainloop()
В метод image_create в качестве первого параметра передается позиция вставки изображения. В качестве второго параметра - image указывается файл изображения:
Аналогично можно добавлять другие виджеты в Text с помощью метода window_create()
from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") editor = Text() editor.pack(expand=1, fill=BOTH) def click(): editor.insert("2.0", "Click\n") btn = ttk.Button(editor, text="Click", command=click) editor.window_create("1.0", window=btn) root.mainloop()
Первый параметр метода window_create
также позиция создания виджета, а второй параметр - window указывает на добавляемый виджет, в данном случае это кнопка,
на которую также можно нажимать и также можно обрабатывать ее нажатия