Text - многострочное текстовое поле
Виджет Тext
предоставляет расширенные возможности, которые позволяют редактировать многострочный текст и форматировать способ его отображения, например изменять его цвет и шрифт.
Вы также можете использовать элегантные структуры, такие как вкладки и метки, чтобы найти определенные разделы текста и применить изменения к этим областям. Кроме того, вы можете вставлять окна и изображения в текст, потому что этот виджет был разработан для обработки как простого, так и отформатированного текста.
text_area = Text(master, options)
где master - ссылка на родительское окно, а options - набор следующих параметров:
- bg: цвет фона по умолчанию для текстового виджета.
- bd: ширина границы вокруг текстового виджета. По умолчанию 2 пикселя.
- font: шрифт по умолчанию для текста, вставляемого в виджет.
- fg: цвет, используемый для текста (и растровых изображений) в виджете. Вы можете изменить цвет для помеченных регионов; эта опция только по умолчанию.
- height: высота виджета в строках (не в пикселях!), измеренная в соответствии с текущим размером шрифта.
- padx: размер внутреннего отступа, добавляемый слева и справа от текстовой области. По умолчанию используется один пиксель.
- pady: размер внутреннего отступа, добавляемый над и под текстовой областью. По умолчанию используется один пиксель.
- selectbackground: цвет фона для отображения выбранного текста.
- selectborderwidth: ширина границы для использования вокруг выделенного текста.
- spacing1: эта опция указывает, сколько дополнительного вертикального пространства помещается над каждой строкой текста. Если строка переносится, это пространство добавляется только перед первой строкой, которую она занимает на дисплее. По умолчанию 0.
- spacing2: этот параметр указывает, сколько дополнительного вертикального пространства необходимо добавить между отображаемыми строками текста при переносе логической строки. По умолчанию 0.
- spacing3: эта опция указывает, сколько дополнительного вертикального пространства добавляется ниже каждой строки текста. Если строка переносится, это пространство добавляется только после последней строки, которую оно занимает на дисплее. По умолчанию 0.
- state: обычно текстовые виджеты реагируют на события клавиатуры и мыши; установить
state=NORMAL
, чтобы получить это поведение. Если вы установитеstate=DISABLED
, текстовый виджет не будет отвечать, и вы не сможете изменять его содержимое программным способом. - width: ширина виджета в символах (не в пикселях!), измеренная в соответствии с текущим размером шрифта.
- wrap: эта опция управляет отображением слишком широких линий. Установите
wrap=WORD
, и он будет разбивать строку после последнего слова, которое будет соответствовать. При поведении по умолчанию,wrap=CHAR
, любая слишком длинная строка будет разбита на любой символ. - xscrollcommand: чтобы сделать текстовый виджет горизонтально прокручиваемым, установите этот параметр для метода set() горизонтальной полосы прокрутки.
- yscrollcommand: чтобы сделать текстовый виджет вертикально прокручиваемым, установите этот параметр для метода set() вертикальной полосы прокрутки.
Методы
Text имеет следующие методы:
- delete(startindex [,endindex]) - метод удаляет определенный символ или диапазон текста.
- get(startindex [,endindex]) - метод возвращает определенный символ или диапазон текста.
- index(index) - возвращает абсолютное значение индекса на основе данного индекса.
- insert(index [,string]...) - метод вставляет строки в указанное местоположение индекса.
- selection_get() - метод возвращает выделенный текст.
ПРИМЕЧАНИЕ
Индексы можно указывать ключевыми словами:
SEL_FIRST
,SEL_LAST
- при выделении текста указывает на начало и конец позиций выделенного фрагмента.INSERT
- место расположение курсораEND
- конец текста- указывая число:
1.0
, где1
- указания номера стоки, а0
- указание номера символа в строке.
Пример Text:
from tkinter import *
root = Tk()
text = Text(root)
text.insert(INSERT, "Hello.....")
text.insert(END, "Bye Bye.....")
text.pack()
root.mainloop()
2
3
4
5
6
7
8
Результат:
Упражнения
Напишите программу с текстовым полем растягивающимся на всё окно. Проверьте правильность работы растяжения изменяя размер окна.
Напишите программу с текстовым полем и кнопкой
Add
. При нажатии на кнопку происходит добавление текста в текстовое поле: "This is a new text!"Напишите программу с текстовым полем и кнопками:
Copy all
- при нажатии на которую, происходит копирование всего текста,Paste
- при нажатии на которую, происходит добавление скопированного текста.
Напишите программу с текстовым полем и кнопками:
Copy all
- при нажатии на которую, происходит копирование всего текста,Copy
- при нажатии на которую, происходит копирование выделенного текста,Paste
- при нажатии на которую, происходит добавление скопированного текста в место расположения курсора.
Напишите программу с текстовым полем и кнопками
Copy
,Cut
иPaste
:Copy
- при нажатии, происходит копирование выделенного текста;Cut
- при нажатии, происходит вырезание выделенного текста в буфер;Paste
- при нажатии, происходит добавление скопированного текста в место расположения курсора.
Напишите программу с текстовым полем и кнопками "Capitalize","Lower", "Upper" и "Title". Нажатие кнопок форматирует выделенный пользователем текст:
- нажатие "Capitalize": в выделенном тексте первая буква становиться заглавная, остальные маленькие;
- нажатие "Lower": в выделенном тексте все буквы становятся строчными (маленькими);
- нажатие "Upper": в выделенном тексте все буквы становятся заглавными (большими);
- нажатие "Title": в выделенном тексте первая буква каждого слова становится заглавная.
Напишите программу с текстовым полем, кнопкой "Get status" и строкой состояния, виджеты должны масштабироваться под размер окна. Обновления статуса происходит при нажатии кнопки. В стоке состояния вывести информацию:
- общее количество символов (функция
len()
- возвращает длину строки), - общее количество строк,
- номер строки, в которой находиться курсор,
- номер символа в строке, в которой находиться курсор.
Пример строки состояния можно подсмотреть в текстовом редакторе, например "Блокнот":
- общее количество символов (функция
Напишите программу с текстовым полем и кнопкой
<- BackSpace
. При нажатии на кнопку будет удаляться последний напечатанный символ, с учетом места расположения курсора.