Текстовые виджеты предоставляют расширенные возможности, которые позволяют редактировать многострочный текст и форматировать способ его отображения, например изменять его цвет и шрифт.
Вы также можете использовать элегантные структуры, такие как вкладки и метки, чтобы найти определенные разделы текста и применить изменения к этим областям. Кроме того, вы можете вставлять окна и изображения в текст, потому что этот виджет был разработан для обработки как простого, так и отформатированного текста.
Вот простой синтаксис для создания этого виджета -
w = Text ( master, option, ... )
| Sr.No. | Опции и Описание |
|---|---|
| 1 | bg Цвет фона по умолчанию для текстового виджета. |
| 2 | bd Ширина границы вокруг текстового виджета. По умолчанию 2 пикселя. |
| 3 | cursor Курсор, который появится, когда мышь находится над текстовым виджетом. |
| 4 | exportselection Обычно текст, выделенный в текстовом виджете, экспортируется для выделения в диспетчере окон. Установить exportselection = 0 если вы не хотите такого поведения. |
| 5 | font Шрифт по умолчанию для текста, вставляемого в виджет. |
| 6 | fg Цвет, используемый для текста (и растровых изображений) в виджете. Вы можете изменить цвет для помеченных регионов; эта опция только по умолчанию. |
| 7 | height Высота виджета в строках (не в пикселях!), Измеряется в соответствии с текущим размером шрифта. |
| 8 | highlightbackground Цвет фокуса выделяется, когда текстовый виджет не имеет фокуса. |
| 9 | highlightcolor Цвет фокуса выделяется, когда текстовый виджет имеет фокус. |
| 10 | highlightthickness Толщина фокуса подсветки. По умолчанию 1. Усановить highlightthickness = 0 чтобы подавить отображение выделения фокуса. |
| 11 | insertbackground Цвет курсора вставки. По умолчанию черный. |
| 12 | insertborderwidth Размер трехмерной границы вокруг курсора вставки. По умолчанию 0. |
| 13 | insertofftime Количество миллисекунд, в течение которых курсор вставки выключен во время цикла мигания. Установите эту опцию на ноль, чтобы подавить мигание. По умолчанию 300. |
| 14 | insertontime Количество миллисекунд, в течение которых курсор вставки включен во время цикла мигания. По умолчанию 600. |
| 15 | insertwidth Ширина курсора вставки (его высота определяется самым высоким элементом в его строке). По умолчанию 2 пикселя. |
| 16 | padx Размер внутреннего отступа добавляется слева и справа от текстовой области. По умолчанию используется один пиксель. |
| 17 | pady Размер внутреннего отступа добавлен над и под текстовой областью. По умолчанию используется один пиксель. |
| 18 | relief 3-D вид текстового виджета. По умолчанию relief = SUNKEN. |
| 19 | selectbackground Цвет фона для отображения выбранного текста. |
| 20 | selectborderwidth Ширина границы, используемой вокруг выделенного текста. |
| 21 | spacing1 Этот параметр указывает, сколько дополнительного вертикального пространства помещается над каждой строкой текста. Если строка переносится, это пространство добавляется только перед первой строкой, которую она занимает на дисплее. По умолчанию 0. |
| 22 | spacing2 Этот параметр указывает, сколько дополнительного вертикального пространства необходимо добавить между отображаемыми строками текста при переносе логической строки. По умолчанию 0. |
| 23 | spacing3 Этот параметр указывает, сколько дополнительного вертикального пространства добавляется ниже каждой строки текста. Если строка переносится, это пространство добавляется только после последней строки, которую оно занимает на дисплее. По умолчанию 0. |
| 24 | state Обычно текстовые виджеты реагируют на события клавиатуры и мыши; установить state = NORMAL чтобы получить такое поведение. Если вы установите state = DISABLED, текстовый виджет не будет отвечать, и вы не сможете изменять его содержимое программным путем. |
| 25 | tabs Эта опция контролирует, как символы табуляции позиционируют текст. |
| 26 | width Ширина виджета в символах (не в пикселях!), Измеряется в соответствии с текущим размером шрифта. |
| 27 | wrap Эта опция управляет переносом слов. Установить wrap = WORD и слова будут переноситься на следующую строку. Поведение по умолчанию, wrap = CHAR, любая строка, которая становится слишком длинной, будет разбита на любом символе |
| 28 | xscrollcommand Чтобы сделать текстовый виджет горизонтально прокручиваемым, установите этот параметр для метода set () горизонтальной полосы прокрутки. |
| 29 | yscrollcommand Чтобы сделать текстовый виджет вертикально прокручиваемым, установите для этого параметра метод set () вертикальной полосы прокрутки. |
Текстовые объекты имеют эти методы -
| Sr.No. | Методы и Описание |
|---|---|
| 1 | delete(startindex [,endindex]) Этот метод удаляет определенный символ или диапазон текста. |
| 2 | get(startindex [,endindex]) Этот метод возвращает определенный символ или диапазон текста. |
| 3 | index(index) Возвращает абсолютное значение индекса на основе данного индекса. |
| 4 | insert(index [,string]…) Этот метод вставляет строки в указанное местоположение индекса. |
| 5 | see(index) Этот метод возвращает true, если текст, расположенный в позиции индекса, виден. |
Текстовые виджеты поддерживают три различных вспомогательных структуры: метки, вкладки и индексы:
Метки используются для закладки позиций между двумя символами в данном тексте. У нас есть следующие методы, доступные для обработки меток:
| Sr.No. | Методы и Описание |
|---|---|
| 1 | index(mark) Возвращает расположение строки и столбца определенной метки. |
| 2 | mark_gravity(mark [,gravity]) Возвращает серьезность данной отметки. Если указан второй аргумент, для данной отметки устанавливается сила тяжести. |
| 3 | mark_names() Возвращает все метки из виджета Текст. |
| 4 | mark_set(mark, index) Информирует новую позицию по данной отметке. |
| 5 | mark_unset(mark) Удаляет данную отметку из виджета «Текст». |
Теги используются для привязки имен к областям текста, что облегчает задачу изменения настроек отображения определенных текстовых областей. Теги также используются для привязки обратных вызовов событий к определенным диапазонам текста.
Ниже приведены доступные методы для обработки вкладок.
| Sr.No. | Методы и Описание |
|---|---|
| 1 | tag_add(tagname, startindex[,endindex] …) Этот метод помечает либо позицию, определенную startindex, либо диапазон, ограниченный позициями startindex и endindex. |
| 2 | tag_config Этот метод можно использовать для настройки свойств тега, которые включают, выравнивание (по центру, влево или вправо), вкладки (это свойство имеет те же функции, что и свойства вкладок виджета «Текст») и подчеркивание (используется для подчеркивания тегового текста) |
| 3 | tag_delete(tagname) Этот метод используется для удаления и удаления данного тега. |
| 4 | tag_remove(tagname [,startindex[.endindex]] …) После применения этого метода данный тег удаляется из предоставленной области без удаления фактического определения тега. |
from tkinter import * root = Tk() text = Text(root) text.insert(INSERT, "Hello.....") text.insert(END, "Bye Bye.....") text.pack() text.tag_add("here", "1.0", "1.4") text.tag_add("start", "1.8", "1.13") text.tag_config("here", background = "yellow", foreground = "blue") text.tag_config("start", background = "black", foreground = "green") root.mainloop()
from tkinter import * def addStr(): t.insert(END, 'hello\n') def delStr(): t.delete('1.0', END) def getStr(): print(t.get('1.0', END)) root = Tk() root.geometry('400x400') #Создаем фрейм для меню f_menu = Frame(root, bg='#1F252A', height=40) f_menu.pack(fill=X) #Создаем фрейм для текстового ввода f_text = Frame(root) f_text.pack(fill=BOTH, expand=1) #заголовок меню l_menu = Label(f_menu, text="Menu", bg="#2B3239", fg="#c6dec1", font="Arial 10") l_menu.place(x=10, y=10) #Добавить строку btt_add = Button(root, text='add', command=addStr).place(x=50, y=10) #Очистить редактор btt_del = Button(root, text='delete', command=delStr).place(x=90, y=10) #Получить данные из редактроа btt_get = Button(root, text='get', command=getStr).place(x=140, y=10) #Поле ввода t = Text(f_text, bg="#343D46", fg="#c6dec1", padx=10, #отступ по оси x pady=10, #отступ по оси y wrap=WORD, #Перенос слов insertbackground="#EDA756",#цвет курсора selectbackground="#4E5A65", #цвет выделения spacing3=10, #Расстояние между строк width=30) t.pack(fill=BOTH, expand=1, side=LEFT) #Создаем скроллбар scroll = Scrollbar(f_text, command=t.yview)#Создаем скролл по оси y scroll.pack(fill=Y, side=LEFT) t.config(yscrollcommand=scroll.set) root.mainloop()