The PanedWindow widget is a container widget that organizes child widgets into panes that can be resized by dragging the dividers (sashes). It is useful for creating flexible layouts where users can adjust the size of different sections of the interface.
w = PanedWindow(master, options)
• master: The parent widget or window where the PanedWindow will be placed.
• options: Various configuration options for the PanedWindow (listed below).
Options for PanedWindow Widget:
| SN | Option | Description |
|---|---|---|
| 1 | bg | Background color of the widget when it doesn't have focus. |
| 2 | bd | 3D border size of the widget. Default is no border for the trough and a 2-pixel border for sashes. |
| 3 | borderwidth | Border width of the widget. Default is 2 pixels. |
| 4 | cursor | Mouse pointer type when it is over the widget. |
| 5 | handlepad | Distance between the handle and the end of the sash. Default is 8 pixels. |
| 6 | handlesize | Size of the handle. Default is 8 pixels (always square). |
| 7 | height | Height of the widget. If not specified, it is calculated by the height of child widgets. |
| 8 | orient | Orientation of the panes. Set to HORIZONTAL for side-by-side panes or VERTICAL for top-to-bottom panes. |
| 9 | relief | Type of border. Default is FLAT. |
| 10 | sashpad | Padding around each sash. Default is 0. |
| 11 | sashrelief | Type of border around each sash. Default is FLAT. |
| 12 | sashwidth | Width of the sash. Default is 2 pixels. |
| 13 | showhandle | Set to True to display the handles. Default is False. |
| 14 | width | Width of the widget. If not specified, it is calculated by the size of child widgets. |
| SN | Method | Description |
|---|---|---|
| 1 | add(child, options) | Adds a child widget (pane) to the PanedWindow with the specified options. |
| 2 | config(options) | Configures the PanedWindow with the specified options. |
| 3 | forget(child) | Removes a child widget from the PanedWindow. |
| 4 | paneconfigure(child, options) | Configures options for a specific pane. |
Here's an example of how to create a PanedWindow with two resizable panes:
from tkinter import *
# Create the main window
root = Tk()
root.title("PanedWindow Example")
# Create a PanedWindow widget
paned_window = PanedWindow(root, orient=HORIZONTAL, bg='lightgrey')
paned_window.pack(fill=BOTH, expand=True)
# Create two frames to add as panes
left_frame = Frame(paned_window, bg='lightblue', width=200)
right_frame = Frame(paned_window, bg='lightgreen', width=300)
# Add the frames to the PanedWindow
paned_window.add(left_frame, width=200, minsize=100)
paned_window.add(right_frame, width=300, minsize=150)
# Run the Tkinter event loop
root.mainloop()
• orient: Set to HORIZONTAL to arrange panes side by side, or VERTICAL for stacking panes top to bottom.
• bg: Sets the background color of the PanedWindow.
• add(child, options): Adds child widgets (frames) to the PanedWindow. You can specify options like width and minimum size for each pane.
This example creates a PanedWindow with two resizable panes, one on the left and one on the right. The orient option determines the direction of the panes, and the bg option sets the background color. The add method is used to include child widgets (frames) in the PanedWindow, which users can resize by dragging the sash.