Виджет PanedWindow в Tkinter

Виджет PanedWindow в Tkinter: что это и как работает

PanedWindow — это виджет, который может содержать в себе один или несколько дочерних виджетов в форме разделённых панелей.

Он предоставляет пользователю возможность динамически изменять размер этих панелей путем перетаскивания разделительных полос между ними.

Создание PanedWindow

Создание виджета PanedWindow в Tkinter происходит с помощью вызова конструктора PanedWindow().

import tkinter as tk

root = tk.Tk()

# Создание PanedWindow
pw = tk.PanedWindow(root)
pw.pack(fill=tk.BOTH, expand=1)

root.mainloop()

В этом примере создается виджет PanedWindow, но он пока что пуст.

Добавление виджетов в PanedWindow

Для добавления виджетов в PanedWindow используется метод add():

import tkinter as tk

root = tk.Tk()

pw = tk.PanedWindow(root)
pw.pack(fill=tk.BOTH, expand=1)

# Добавление виджетов в PanedWindow
frame1 = tk.Label(pw, text="Панель 1", bg="blue", fg="white")
frame2 = tk.Label(pw, text="Панель 2", bg="red", fg="white")

pw.add(frame1)
pw.add(frame2)

root.mainloop()

В этом примере в PanedWindow добавляются два виджета типа Label, каждый из которых занимает одну панель.

Свойства PanedWindow

Виджет PanedWindow имеет множество свойств, которые позволяют настраивать его внешний вид и поведение. Некоторые из них:

  • orient — Определяет ориентацию панелей. Может принимать значения VERTICAL (вертикальная ориентация) или HORIZONTAL (горизонтальная ориентация).
  • handlepad — Расстояние в пикселях между handle и краем виджета.
  • handlesize — Размер handle в пикселях.
  • sashrelief — Определяет внешний вид handle. Может принимать такие значения как RAISED, SUNKEN, FLAT и др.
  • sashwidth — Ширина handle в пикселях.
  • showhandle — Определяет, отображается ли handle.

Методы PanedWindow

Основные методы PanedWindow:

  • add(widget, **options) — добавляет указанный виджет в PanedWindow.
  • remove(widget) — удаляет указанный виджет из PanedWindow.
  • paneconfigure(widget, **options) — изменяет свойства определенного виджета в PanedWindow.
  • panecget(widget, option) — возвращает текущее значение указанного свойства виджета.
  • sash_place(index, x, y) — размещает указанную handle в позиции x, y.
  • sash_coord(index) — возвращает координаты указанной handle.

Пример использования

from tkinter import *

root = Tk()
# Создание виджета PanedWindow
p = PanedWindow(root, orient=VERTICAL, bg='blue', handlepad=10, handlesize=20, sashwidth=10)
p.pack(fill=BOTH, expand=1)

# Создание первого фрейма и добавление его в PanedWindow
top = Label(p, text='Верхняя панель', bg='red', height=5)
p.add(top)

# Создание второго фрейма и добавление его в PanedWindow
bottom = Label(p, text='Нижняя панель', bg='green', height=5)
p.add(bottom)

root.mainloop()

В этом примере создается PanedWindow с двумя панелями — «Верхняя панель» и «Нижняя панель». Между этими панелями есть handle, которую можно перетаскивать, чтобы изменить размеры панелей. Размер handle установлен на 20 пикселей, ширина sash (элемент, который включает в себя handle) — 10 пикселей. Обратите внимание, что в данном примере handle будет невидим, так как мы не установили showhandle=True.

Комментарии в коде помогают понять, какие действия выполняются на каждом шагу.

Заключение

PanedWindow — это полезный виджет в Tkinter, который позволяет создавать гибкие пользовательские интерфейсы с регулируемыми разделами. Понимание работы с этим виджетом может значительно упростить разработку GUI.

Содержание: