Виджет 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()
Выход: