threepanewindows


Namethreepanewindows JSON
Version 1.1.0 PyPI version JSON
download
home_pagehttps://github.com/stntg/threepanewindows
SummaryProfessional three-pane window layouts for Tkinter applications with docking, theming, and advanced UI components
upload_time2025-07-27 10:38:24
maintainerNone
docs_urlNone
authorStan Griffiths
requires_python>=3.9
licenseMIT
keywords tkinter gui layout three-pane dockable ui desktop application framework
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ThreePaneWindows

[![PyPI version](https://img.shields.io/pypi/v/threepanewindows.svg)](https://pypi.org/project/threepanewindows/)
[![Python versions](https://img.shields.io/pypi/pyversions/threepanewindows.svg)](https://pypi.org/project/threepanewindows/)
[![CI Status](https://github.com/stntg/threepanewindows/workflows/CI/badge.svg)](https://github.com/stntg/threepanewindows/actions)
[![CodeFactor](https://www.codefactor.io/repository/github/stntg/threepanewindows/badge)](https://www.codefactor.io/repository/github/stntg/threepanewindows)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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[![PyPI version](https://img.shields.io/pypi/v/threepanewindows.svg)](https://pypi.org/project/threepanewindows/)\n[![Python versions](https://img.shields.io/pypi/pyversions/threepanewindows.svg)](https://pypi.org/project/threepanewindows/)\n[![CI Status](https://github.com/stntg/threepanewindows/workflows/CI/badge.svg)](https://github.com/stntg/threepanewindows/actions)\n[![CodeFactor](https://www.codefactor.io/repository/github/stntg/threepanewindows/badge)](https://www.codefactor.io/repository/github/stntg/threepanewindows)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](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"
}
        
Elapsed time: 1.05218s