На этом шаге мы рассмотрим способ оформления текста и размещение других виджетов в текстовом поле.
Особенностью текстового поля библиотеки 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. Размещение компонентов в многострочном поле
На следующем шаге мы рассмотрим обработку "горячих клавиш".