Шаг 78.
Библиотека Tkinter. Компоненты и вспомогательные классы. Нестилизуемые компоненты. Компонент Text: размещение тэгов и виджетов

    На этом шаге мы рассмотрим способ оформления текста и размещение других виджетов в текстовом поле.

    Особенностью текстового поля библиотеки Tk является возможность форматировать текст в нем, то есть придавать его разным частям разное оформление. Делается это с помощью методов tag_add() и tag_config(). Первый добавляет тег, при этом надо указать его произвольное имя и отрезок текста, к которому он будет применяться. Метод tag_config() настраивает для тега стили оформления.

from tkinter import *

root = Tk()
text = Text(width=50, height=10)
text.pack()
text.insert(1.0, "Hello world!\nline two")
text.tag_add('title', 1.0, '1.end')
text.tag_config('title', justify=CENTER, font=("Verdana", 24, 'bold'))
 
root.mainloop()
Архив с файлом можно взять здесь.


Рис.1. Демонстрация работы перечисленных методов

    Первый параметр метода tag_add() определяет произвольное имя (title), посредством которого метод tag_config() задает параметры фрагмента (выравнивание, шрифт и т.п.). Конструкция 1.end определяет фрагмент именованного текста (в нашем случае - это вся первая строка).

    В виджет Text можно вставлять другие виджеты помощью метода window_creat(). Потребность в этом не велика, однако может быть интересна в случае размещения здесь объектов типа Canvas (смотри 69 шаг).

    В примере ниже вставляется метка в текущую (INSERT) позицию курсора.

from tkinter import *
 
def smile():
    label = Label(text=":)", bg="yellow")
    text.window_create(INSERT, window=label)
 
root = Tk()
text = Text(width=50, height=10)
text.pack()
button = Button(text=":)", command=smile)
button.pack()
 
root.mainloop()
Архив с файлом можно взять здесь.


Рис.2. Размещение компонентов в многострочном поле

    На следующем шаге мы рассмотрим обработку "горячих клавиш".




Предыдущий шаг Содержание Следующий шаг