=====Text=====
Текстовые виджеты предоставляют расширенные возможности, которые позволяют редактировать многострочный текст и форматировать способ его отображения, например изменять его цвет и шрифт.
Вы также можете использовать элегантные структуры, такие как вкладки и метки, чтобы найти определенные разделы текста и применить изменения к этим областям. Кроме того, вы можете вставлять окна и изображения в текст, потому что этот виджет был разработан для обработки как простого, так и отформатированного текста.
====Синтаксис====
Вот простой синтаксис для создания этого виджета -
w = Text ( master, option, ... )
====Параметры====
* **master** - Это представляет родительское окно.
* **options** − Вот список наиболее часто используемых параметров для этого виджета. Эти параметры можно использовать как пары ключ-значение, разделенные запятыми.
^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]] …)** \\ После применения этого метода данный тег удаляется из предоставленной области без удаления фактического определения тега.|
====Примеры====
==insert text==
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()
{{ :python:оконное_приложение:tkinter:text2.jpg?300 |}}
==Бокнот==
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()
{{ :python:оконное_приложение:tkinter:text1.png?300 |}}