# ThreePaneWindows
[](https://pypi.org/project/threepanewindows/)
[](https://pypi.org/project/threepanewindows/)
[](https://github.com/stntg/threepanewindows/actions)
[](https://www.codefactor.io/repository/github/stntg/threepanewindows)
[](https://github.com/psf/black)
[](https://opensource.org/licenses/MIT)
**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 and automatic center panel expansion
- **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
- **Cross-Platform Icon Support**: Multiple icon formats (.ico, .png, .gif, .bmp, .xbm) with automatic platform optimization
- **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](https://github.com/stntg/threepanewindows/blob/main/ENHANCED_FEATURES.md) for complete documentation of the new professional features.**
>
> 🖼️ **See [CROSS_PLATFORM_ICONS.md](https://github.com/stntg/threepanewindows/blob/main/CROSS_PLATFORM_ICONS.md) for detailed cross-platform icon support documentation.**
## Installation
### From Source
```bash
git clone <repository-url>
cd threepanewindows
pip install -e .
```
### Development Installation
```bash
pip install -e ".[dev]"
```
## Quick Start
### Dockable Three-Pane Window
```python
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!)
```python
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
```python
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:
```python
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](https://github.com/stntg/threepanewindows/blob/main/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:
```bash
threepane-demo
```
Or run directly with Python:
```bash
python -m threepanewindows.examples
```
## Requirements
- Python 3.9+
- tkinter (included with Python)
## License
This project is licensed under the MIT License.
Raw data
{
"_id": null,
"home_page": "https://github.com/stntg/threepanewindows",
"name": "threepanewindows",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": "Stan Griffiths <stantgriffiths@gmail.com>",
"keywords": "tkinter, gui, layout, three-pane, dockable, ui, desktop, application, framework",
"author": "Stan Griffiths",
"author_email": "Stan Griffiths <stantgriffiths@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/07/6d/73e933176daef35a58221288616528af8839fcff604d575b775f541d67e7/threepanewindows-1.1.0.tar.gz",
"platform": null,
"description": "# ThreePaneWindows\n\n[](https://pypi.org/project/threepanewindows/)\n[](https://pypi.org/project/threepanewindows/)\n[](https://github.com/stntg/threepanewindows/actions)\n[](https://www.codefactor.io/repository/github/stntg/threepanewindows)\n[](https://github.com/psf/black)\n[](https://opensource.org/licenses/MIT)\n\n**Professional three-pane window layouts for Tkinter applications with docking, theming, and advanced UI components.**\n\n## Features\n\n- **DockableThreePaneWindow**: A sophisticated three-pane layout with detachable side panels and automatic center panel expansion\n- **FixedThreePaneLayout**: A simple fixed three-pane layout with customizable panels\n- **\u2728 NEW: EnhancedDockableThreePaneWindow**: Professional-grade interface with advanced features\n- **\ud83d\udd12 NEW: Fixed Width Panes**: Optional fixed-width panes that don't resize with the window\n- **\ud83d\udccb NEW: Menu Bar Integration**: Built-in support for menu bars across all window types\n- Easy-to-use builder pattern for content creation\n- Fully customizable panel sizes and colors\n- Dynamic width control and constraint management\n- Cross-platform compatibility (Windows, macOS, Linux)\n\n### \ud83c\udfa8 Enhanced Professional Features (NEW!)\n\n- **Professional Theming System**: Light, Dark, and Blue Professional themes\n- **Cross-Platform Icon Support**: Multiple icon formats (.ico, .png, .gif, .bmp, .xbm) with automatic platform optimization\n- **Drag & Drop Interface**: Intuitive panel detaching by dragging headers\n- **Advanced Customization**: Configurable panel properties, icons, and constraints\n- **Fixed Width Control**: Panes can be set to fixed widths or remain resizable\n- **Menu Bar Integration**: Seamless menu bar support across all window types\n- **Beautiful UI**: Modern, professional appearance with smooth interactions\n- **Smart Positioning**: Intelligent window placement and sizing\n- **Visual Feedback**: Professional hover effects and drag indicators\n\n> \ud83d\udcd6 **See [ENHANCED_FEATURES.md](https://github.com/stntg/threepanewindows/blob/main/ENHANCED_FEATURES.md) for complete documentation of the new professional features.**\n>\n> \ud83d\uddbc\ufe0f **See [CROSS_PLATFORM_ICONS.md](https://github.com/stntg/threepanewindows/blob/main/CROSS_PLATFORM_ICONS.md) for detailed cross-platform icon support documentation.**\n\n## Installation\n\n### From Source\n```bash\ngit clone <repository-url>\ncd threepanewindows\npip install -e .\n```\n\n### Development Installation\n```bash\npip install -e \".[dev]\"\n```\n\n## Quick Start\n\n### Dockable Three-Pane Window\n\n```python\nimport tkinter as tk\nfrom threepanewindows import DockableThreePaneWindow\n\ndef build_left(frame):\n tk.Label(frame, text=\"Left Panel\").pack(pady=10)\n tk.Button(frame, text=\"Button 1\").pack(pady=5)\n\ndef build_center(frame):\n tk.Label(frame, text=\"Center Panel\").pack(pady=10)\n text = tk.Text(frame)\n text.pack(fill='both', expand=True, padx=10, pady=10)\n\ndef build_right(frame):\n tk.Label(frame, text=\"Right Panel\").pack(pady=10)\n tk.Listbox(frame).pack(fill='both', expand=True, padx=10, pady=10)\n\nroot = tk.Tk()\nroot.title(\"Dockable Three-Pane Example\")\nroot.geometry(\"900x600\")\n\nwindow = DockableThreePaneWindow(\n root,\n side_width=200,\n left_builder=build_left,\n center_builder=build_center,\n right_builder=build_right\n)\nwindow.pack(fill='both', expand=True)\n\nroot.mainloop()\n```\n\n### \u2728 Enhanced Professional Three-Pane Window (NEW!)\n\n```python\nimport tkinter as tk\nfrom threepanewindows import EnhancedDockableThreePaneWindow, PaneConfig\n\ndef build_left(frame):\n tk.Label(frame, text=\"\ud83d\udcc1 File Explorer\").pack(pady=10)\n # Add your file tree here\n\ndef build_center(frame):\n tk.Label(frame, text=\"\ud83d\udcdd Code Editor\").pack(pady=10)\n # Add your text editor here\n\ndef build_right(frame):\n tk.Label(frame, text=\"\ud83d\udd27 Properties\").pack(pady=10)\n # Add your properties panel here\n\nroot = tk.Tk()\nroot.title(\"Professional IDE\")\nroot.geometry(\"1200x800\")\n\n# Configure panels with professional settings\nleft_config = PaneConfig(\n title=\"Explorer\",\n icon=\"\ud83d\udcc1\",\n default_width=250,\n min_width=200,\n max_width=400,\n detachable=True\n)\n\nright_config = PaneConfig(\n title=\"Properties\",\n icon=\"\ud83d\udd27\",\n default_width=200,\n detachable=True\n)\n\n# Create enhanced window with professional theming\nwindow = EnhancedDockableThreePaneWindow(\n root,\n left_config=left_config,\n right_config=right_config,\n left_builder=build_left,\n center_builder=build_center,\n right_builder=build_right,\n theme_name=\"blue\" # Professional blue theme\n)\nwindow.pack(fill='both', expand=True)\n\nroot.mainloop()\n```\n\n### Fixed Three-Pane Layout\n\n```python\nimport tkinter as tk\nfrom threepanewindows import FixedThreePaneLayout\n\nroot = tk.Tk()\nroot.title(\"Fixed Three-Pane Example\")\nroot.geometry(\"800x500\")\n\nlayout = FixedThreePaneLayout(root, side_width=180)\nlayout.pack(fill='both', expand=True)\n\n# Customize panel labels\nlayout.set_label_texts(\n left=\"Navigation\",\n center=\"Workspace\",\n right=\"Properties\"\n)\n\n# Add content to panels\nlayout.add_to_left(tk.Button(root, text=\"Menu Item 1\"))\nlayout.add_to_center(tk.Text(root))\nlayout.add_to_right(tk.Label(root, text=\"Property 1\"))\n\nroot.mainloop()\n```\n\n### \ud83d\udd12 Fixed Width Panes (NEW!)\n\nAll window types now support fixed width panes that don't resize with the window:\n\n```python\nimport tkinter as tk\nfrom threepanewindows import DockableThreePaneWindow\n\ndef build_left(frame):\n tk.Label(frame, text=\"Fixed Width\\n200px\").pack(pady=10)\n\ndef build_center(frame):\n tk.Label(frame, text=\"Resizable Center\").pack(pady=10)\n\ndef build_right(frame):\n tk.Label(frame, text=\"Fixed Width\\n150px\").pack(pady=10)\n\nroot = tk.Tk()\n\n# Create menu bar\nmenubar = tk.Menu(root)\nfile_menu = tk.Menu(menubar, tearoff=0)\nfile_menu.add_command(label=\"New\", command=lambda: print(\"New\"))\nmenubar.add_cascade(label=\"File\", menu=file_menu)\n\n# Create window with fixed width panes and menu\nwindow = DockableThreePaneWindow(\n root,\n left_builder=build_left,\n center_builder=build_center,\n right_builder=build_right,\n left_fixed_width=200, # Left pane fixed at 200px\n right_fixed_width=150, # Right pane fixed at 150px\n menu_bar=menubar # Integrated menu bar\n)\nwindow.pack(fill='both', expand=True)\n\n# Dynamic width control\nwindow.set_left_fixed_width(250) # Change to 250px\nwindow.clear_right_fixed_width() # Make right pane resizable\n\nroot.mainloop()\n```\n\n> \ud83d\udcd6 **See [FIXED_WIDTH_FEATURES.md](https://github.com/stntg/threepanewindows/blob/main/FIXED_WIDTH_FEATURES.md) for complete documentation of the fixed width and menu bar features.**\n\n## Demo Application\n\nRun the demo to see both layout types in action:\n\n```bash\nthreepane-demo\n```\n\nOr run directly with Python:\n\n```bash\npython -m threepanewindows.examples\n```\n\n## Requirements\n\n- Python 3.9+\n- tkinter (included with Python)\n\n## License\n\nThis project is licensed under the MIT License.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Professional three-pane window layouts for Tkinter applications with docking, theming, and advanced UI components",
"version": "1.1.0",
"project_urls": {
"Bug Tracker": "https://github.com/stntg/threepanewindows/issues",
"Changelog": "https://github.com/stntg/threepanewindows/blob/main/CHANGELOG.md",
"Documentation": "https://stntg.github.io/ThreePaneWindows/",
"Homepage": "https://github.com/stntg/threepanewindows",
"Repository": "https://github.com/stntg/threepanewindows.git",
"Source Code": "https://github.com/stntg/threepanewindows"
},
"split_keywords": [
"tkinter",
" gui",
" layout",
" three-pane",
" dockable",
" ui",
" desktop",
" application",
" framework"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "1b6087d0d29d95e7589943037804411b7f30470e3278af0f07d16eccf9386a1b",
"md5": "0e68f4c4b9b1c99524efa30dc9f69241",
"sha256": "6d9c4715163a29780cc08addde50902d43427ba02c73b637e0e7b38dc1da8ce9"
},
"downloads": -1,
"filename": "threepanewindows-1.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "0e68f4c4b9b1c99524efa30dc9f69241",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 75794,
"upload_time": "2025-07-27T10:38:23",
"upload_time_iso_8601": "2025-07-27T10:38:23.415110Z",
"url": "https://files.pythonhosted.org/packages/1b/60/87d0d29d95e7589943037804411b7f30470e3278af0f07d16eccf9386a1b/threepanewindows-1.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "076d73e933176daef35a58221288616528af8839fcff604d575b775f541d67e7",
"md5": "7e325e9271bc7efd5143451c9d6357fc",
"sha256": "2d2b1b4c93262ace8acce55df0e512fff5c16acdf3ed780cfeb42dadb02d7e68"
},
"downloads": -1,
"filename": "threepanewindows-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "7e325e9271bc7efd5143451c9d6357fc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 92468,
"upload_time": "2025-07-27T10:38:24",
"upload_time_iso_8601": "2025-07-27T10:38:24.486537Z",
"url": "https://files.pythonhosted.org/packages/07/6d/73e933176daef35a58221288616528af8839fcff604d575b775f541d67e7/threepanewindows-1.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-27 10:38:24",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "stntg",
"github_project": "threepanewindows",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "threepanewindows"
}