Professional three-pane window layouts for Tkinter applications with docking, theming, and advanced UI components
Project description
ThreePaneWindows
Professional three-pane window layouts for Tkinter applications with docking, theming, and advanced UI components.
Features
- DockableThreePaneWindow: A sophisticated three-pane layout with detachable side panels
- FixedThreePaneLayout: A simple fixed three-pane layout with customizable panels
- ✨ NEW: EnhancedDockableThreePaneWindow: Professional-grade interface with advanced features
- 🔒 NEW: Fixed Width Panes: Optional fixed-width panes that don't resize with the window
- 📋 NEW: Menu Bar Integration: Built-in support for menu bars across all window types
- Easy-to-use builder pattern for content creation
- Fully customizable panel sizes and colors
- Dynamic width control and constraint management
- Cross-platform compatibility (Windows, macOS, Linux)
🎨 Enhanced Professional Features (NEW!)
- Professional Theming System: Light, Dark, and Blue Professional themes
- Drag & Drop Interface: Intuitive panel detaching by dragging headers
- Advanced Customization: Configurable panel properties, icons, and constraints
- Fixed Width Control: Panes can be set to fixed widths or remain resizable
- Menu Bar Integration: Seamless menu bar support across all window types
- Beautiful UI: Modern, professional appearance with smooth interactions
- Smart Positioning: Intelligent window placement and sizing
- Visual Feedback: Professional hover effects and drag indicators
📖 See ENHANCED_FEATURES.md for complete documentation of the new professional features.
Installation
From Source
git clone <repository-url>
cd threepanewindows
pip install -e .
Development Installation
pip install -e ".[dev]"
Quick Start
Dockable Three-Pane Window
import tkinter as tk
from threepanewindows import DockableThreePaneWindow
def build_left(frame):
tk.Label(frame, text="Left Panel").pack(pady=10)
tk.Button(frame, text="Button 1").pack(pady=5)
def build_center(frame):
tk.Label(frame, text="Center Panel").pack(pady=10)
text = tk.Text(frame)
text.pack(fill='both', expand=True, padx=10, pady=10)
def build_right(frame):
tk.Label(frame, text="Right Panel").pack(pady=10)
tk.Listbox(frame).pack(fill='both', expand=True, padx=10, pady=10)
root = tk.Tk()
root.title("Dockable Three-Pane Example")
root.geometry("900x600")
window = DockableThreePaneWindow(
root,
side_width=200,
left_builder=build_left,
center_builder=build_center,
right_builder=build_right
)
window.pack(fill='both', expand=True)
root.mainloop()
✨ Enhanced Professional Three-Pane Window (NEW!)
import tkinter as tk
from threepanewindows import EnhancedDockableThreePaneWindow, PaneConfig
def build_left(frame):
tk.Label(frame, text="📁 File Explorer").pack(pady=10)
# Add your file tree here
def build_center(frame):
tk.Label(frame, text="📝 Code Editor").pack(pady=10)
# Add your text editor here
def build_right(frame):
tk.Label(frame, text="🔧 Properties").pack(pady=10)
# Add your properties panel here
root = tk.Tk()
root.title("Professional IDE")
root.geometry("1200x800")
# Configure panels with professional settings
left_config = PaneConfig(
title="Explorer",
icon="📁",
default_width=250,
min_width=200,
max_width=400,
detachable=True
)
right_config = PaneConfig(
title="Properties",
icon="🔧",
default_width=200,
detachable=True
)
# Create enhanced window with professional theming
window = EnhancedDockableThreePaneWindow(
root,
left_config=left_config,
right_config=right_config,
left_builder=build_left,
center_builder=build_center,
right_builder=build_right,
theme_name="blue" # Professional blue theme
)
window.pack(fill='both', expand=True)
root.mainloop()
Fixed Three-Pane Layout
import tkinter as tk
from threepanewindows import FixedThreePaneLayout
root = tk.Tk()
root.title("Fixed Three-Pane Example")
root.geometry("800x500")
layout = FixedThreePaneLayout(root, side_width=180)
layout.pack(fill='both', expand=True)
# Customize panel labels
layout.set_label_texts(
left="Navigation",
center="Workspace",
right="Properties"
)
# Add content to panels
layout.add_to_left(tk.Button(root, text="Menu Item 1"))
layout.add_to_center(tk.Text(root))
layout.add_to_right(tk.Label(root, text="Property 1"))
root.mainloop()
🔒 Fixed Width Panes (NEW!)
All window types now support fixed width panes that don't resize with the window:
import tkinter as tk
from threepanewindows import DockableThreePaneWindow
def build_left(frame):
tk.Label(frame, text="Fixed Width\n200px").pack(pady=10)
def build_center(frame):
tk.Label(frame, text="Resizable Center").pack(pady=10)
def build_right(frame):
tk.Label(frame, text="Fixed Width\n150px").pack(pady=10)
root = tk.Tk()
# Create menu bar
menubar = tk.Menu(root)
file_menu = tk.Menu(menubar, tearoff=0)
file_menu.add_command(label="New", command=lambda: print("New"))
menubar.add_cascade(label="File", menu=file_menu)
# Create window with fixed width panes and menu
window = DockableThreePaneWindow(
root,
left_builder=build_left,
center_builder=build_center,
right_builder=build_right,
left_fixed_width=200, # Left pane fixed at 200px
right_fixed_width=150, # Right pane fixed at 150px
menu_bar=menubar # Integrated menu bar
)
window.pack(fill='both', expand=True)
# Dynamic width control
window.set_left_fixed_width(250) # Change to 250px
window.clear_right_fixed_width() # Make right pane resizable
root.mainloop()
📖 See FIXED_WIDTH_FEATURES.md for complete documentation of the fixed width and menu bar features.
Demo Application
Run the demo to see both layout types in action:
threepane-demo
Or run directly with Python:
python -m threepanewindows.examples
Requirements
- Python 3.7+
- tkinter (included with Python)
License
This project is licensed under the MIT License.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file threepanewindows-1.0.2.tar.gz.
File metadata
- Download URL: threepanewindows-1.0.2.tar.gz
- Upload date:
- Size: 30.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ebef0a8dd1706e0f43de9e1ad7fcfa8525b4be6680a0fd178f1935a511d31d84
|
|
| MD5 |
548afa96cad3c18d71af9723b6b0bb32
|
|
| BLAKE2b-256 |
cdbaff76b8d71afbb889accec12d033703691beb811001ffbb3c4f385b54476e
|
File details
Details for the file threepanewindows-1.0.2-py3-none-any.whl.
File metadata
- Download URL: threepanewindows-1.0.2-py3-none-any.whl
- Upload date:
- Size: 23.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6fa4b04a0d744b8118104358cc4eba2320f2f080ca7c2a866f71311c860d2eca
|
|
| MD5 |
edce4992943854802e8f95b56f25151b
|
|
| BLAKE2b-256 |
42a91423a86e5ae4a58fe3ba1fa429af85664ec63d8d39e432a76a8d816967fe
|