Text предназначен для отображения и редактирования многострочного текста. Стоит отметить, что данный виджет доступен только в основном
пакете tkinter
, в пакете tkinter.ttk
аналога нет.
Основные параметры конструктора Text:
bd / borderwidth: толщина границы
bg/background: фоновый цвет
fg/foreground: цвет текста
font: шрифт текста, например, font="Arial 14"
- шрифт Arial высотой 14px,
или font=("Verdana", 13, "bold")
- шрифт Verdana высотой 13px с выделением жирным
height: высота в строках
padx: отступ от границ кнопки до ее текста справа и слева
pady: отступ от границ кнопки до ее текста сверху и снизу
relief: определяет тип границы, может принимать значения SUNKEN, RAISED, GROOVE, RIDGE
state: устанавливает состояние кнопки, может принимать значения DISABLED, ACTIVE, NORMAL (по умолчанию)
width: ширина в символах
wrap: указывает, каким образом переносить текст, если он не вмещается в границы виджета
Простейший Text:
from tkinter import * root = Tk() root.title("METANIT.COM") root.geometry("250x200") editor = Text() editor.pack(fill=BOTH, expand=1) root.mainloop()
Иногда предложения в текстовом поле могут быть очень большими, что могут не помещаться в отведенное для них пространство виджета. В этом случае большое значение имеет стратегия переноса, которая устанавливается с помощью параметра wrap. Этот параметр может принимать следующие параметры:
none: переносы отстуствуют, но можно сделать горизонтальную прокрутку
char: переносы осуществляются по символам
word: переносы осуществляются по словам
Сравнение:
from tkinter import * root = Tk() root.title("METANIT.COM") root.geometry("250x200") char_editor = Text(height=5, wrap="char") char_editor.pack(anchor=N, fill=X) word_editor = Text(height=5, wrap="word") word_editor.pack(anchor=S, fill=X) root.mainloop()
Используя Scrollbar, можно добавить в Text прокрутку текста:
from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") root.grid_columnconfigure(0, weight = 1) root.grid_rowconfigure(0, weight = 1) editor = Text(wrap = "none") editor.grid(column = 0, row = 0, sticky = NSEW) ys = ttk.Scrollbar(orient = "vertical", command = editor.yview) ys.grid(column = 1, row = 0, sticky = NS) xs = ttk.Scrollbar(orient = "horizontal", command = editor.xview) xs.grid(column = 0, row = 1, sticky = EW) editor["yscrollcommand"] = ys.set editor["xscrollcommand"] = xs.set root.mainloop()
Здесь для виджета определяются две полосы прокрутки - вертикальная и горизонтальная, соответственно, для каждой определяется свой элемент
Scrollbar
. Один (ys) имеет вертикальную ориентацию, а второй (xs) - горизонтальную. А у Text устанавливаются команды yscrollcommand и xscrollcommand
с помощью соответствующих скроллбаров.
Стоит отметить, что поскольку создание прокрутки для виджета Text является довольно распространенной задачей, то в Tkinter также по умолчанию есть аналог виджета Text с готовой вертикальной прокруткой - ScrolledText (в пакете tkinter.scrolledtext):
from tkinter import * from tkinter.scrolledtext import ScrolledText root = Tk() root.title("METANIT.COM") root.geometry("250x150") st = ScrolledText(root, width=50, height=10) st.pack(fill=BOTH, side=LEFT, expand=True) root.mainloop()