Виджет Tkinter ScrolledText в Python с примерами

На данный момент вы знаете, как создать виджет Text и как привязать вертикальную полосу прокрутки к нему.

Для большего удобства Tkinter предоставляет виджет ScrolledText, который выполняет те же функции в Python, что и виджет Text, связанный с вертикальной полосой прокрутки.

Знакомство с виджетом Tkinter ScrolledText

Чтобы использовать виджет ScrolledText, вам необходимо импортировать класс ScrolledText из модуля tkinter.scrolledtext.

Технически класс ScrolledText наследуется от класса Text. Виджет ScrolledText использует виджет Frame, вставленный между контейнером и виджетом Text, для размещения виджета Scrollbar.

Поэтому ScrolledText имеет те же свойства и методы, что и виджет Text. Кроме того, методы менеджера геометрии, включая pack, grid и place, ограничены Frame.

Пример виджета Tkinter ScrolledText

Следующая программа иллюстрирует, как создать виджет ScrolledText:

import tkinter as tk
from tkinter.scrolledtext import ScrolledText


root = tk.Tk()
root.title("ScrolledText Widget")


st = ScrolledText(root, width=50,  height=10)
st.pack(fill=tk.BOTH, side=tk.LEFT, expand=True)

root.mainloop()

Выход:

Tkinter Прокручиваемый текст

Как это работает.

  • Сначала импортируйте модуль tkinter и класс ScrolledText из модуля tkinter.scrolledtext.
  • Во-вторых, создайте корневое окно и задайте для него заголовок «ScrolledText Widget».
  • В-третьих, создайте новый виджет ScrolledText и отобразите его в корневом окне.
  • Наконец, запустите основной цикл.

Вот та же программа, но написанная с использованием подхода объектно-ориентированного программирования:

import tkinter as tk
from tkinter.scrolledtext import ScrolledText


class App(tk.Tk):
    def __init__(self):
        super().__init__()
        self.title("ScrolledText Widget")
        st = ScrolledText(self, width=50, height=10)
        st.pack(fill=tk.BOTH, side=tk.LEFT, expand=True)


if __name__ == "__main__":
    app = App()
    app.mainloop()
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *