Виджет Tkinter Scrollbar в Python — как использовать

Что такое виджет полосы прокрутки Tkinter?

Полоса прокрутки позволяет просматривать все части другого виджета, содержимое которого обычно превышает доступное пространство.

Виджет полосы прокрутки Tkinter Scrollbar в Python не является частью других виджетов, таких как Text и Listbox. Scrollbar является независимым виджетом.

Чтобы использовать виджет Tkinter Scrollbar, вам необходимо:

  • Сначала создать виджет Scrollbar.
  • Во-вторых, связать scrollbar с прокручиваемым виджетом.

Ниже показано, как создать виджет полосы прокрутки с помощью конструктора ttk.Scrollbar:

scrollbar = ttk.Scrollbar(
    container,
    orient='vertical',
    command=widget.yview
)

В этом синтаксисе:

  • container — это окно или фрейм, на котором располагается полоса прокрутки.
  • Аргумент orient указывает, должна ли полоса прокрутки прокручиваться горизонтально или вертикально.
  • Аргумент command позволяет виджету Scrollbar взаимодействовать с прокручиваемым виджетом.

Прокручиваемый виджет также должен сообщать полосе прокрутки о проценте всей области содержимого, которая в данный момент видна.

Каждый прокручиваемый виджет имеет опции yscrollcommand и/или xscrollcommand. И вы можете назначить ему метод scrollbar.set:

widget['yscrollcommand'] = scrollbar.set

Пример виджета Scrollbar

Виджеты Text являются одним из нескольких типов прокручиваемых виджетов. Следующая программа иллюстрирует простой пользовательский интерфейс, состоящий из виджетов Text и Scrollbar:

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
root.resizable(False, False)
root.title("Scrollbar Widget Example")

# apply the grid layout
root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(0, weight=1)

# create the text widget
text = tk.Text(root, height=10)
text.grid(row=0, column=0, sticky=tk.EW)

# create a scrollbar widget and set its command to the text widget
scrollbar = ttk.Scrollbar(root, orient='vertical', command=text.yview)
scrollbar.grid(row=0, column=1, sticky=tk.NS)

#  communicate back to the scrollbar
text['yscrollcommand'] = scrollbar.set

# add sample text to the text widget to show the screen
for i in range(1,50):
    position = f'{i}.0'
    text.insert(position,f'Line {i}\n');

root.mainloop()

Выход:

Пример использования виджета Scrollbar

Похожие посты
Добавить комментарий

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