threepanewindows


Namethreepanewindows JSON
Version 1.2.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-31 20:09:39
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
- **🎯 NEW v1.2.0: Smart Layout System**: Automatic layout detection
  for optimal sash behavior
- 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
- **Smart Sash Behavior**: Fixed panes use custom layout without
  interactive sash handles
- **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.**

## Requirements

- **Python**: 3.9 to 3.13
- **Dependencies**: None (uses Python standard library only)
- **Platforms**: Windows, macOS, Linux

## Installation

### From PyPI (Recommended)

```bash
pip install threepanewindows
```

### From Source

```bash
git clone https://github.com/stntg/threepanewindows.git
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
```

## System 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/ad/5e/2dd94773d77544b1e1452055a4e8e14244149db082e9d2674c1bb99edb6d/threepanewindows-1.2.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\ndocking, theming, and advanced UI components.**\n\n## Features\n\n- **DockableThreePaneWindow**: A sophisticated three-pane layout with\n  detachable side panels and automatic center panel expansion\n- **FixedThreePaneLayout**: A simple fixed three-pane layout with\n  customizable panels\n- **\u2728 NEW: EnhancedDockableThreePaneWindow**: Professional-grade\n  interface with advanced features\n- **\ud83d\udd12 NEW: Fixed Width Panes**: Optional fixed-width panes that don't\n  resize with the window\n- **\ud83d\udccb NEW: Menu Bar Integration**: Built-in support for menu bars\n  across all window types\n- **\ud83c\udfaf NEW v1.2.0: Smart Layout System**: Automatic layout detection\n  for optimal sash behavior\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\n  themes\n- **Cross-Platform Icon Support**: Multiple icon formats (.ico, .png,\n  .gif, .bmp, .xbm) with automatic platform optimization\n- **Drag & Drop Interface**: Intuitive panel detaching by dragging\n  headers\n- **Advanced Customization**: Configurable panel properties, icons, and\n  constraints\n- **Fixed Width Control**: Panes can be set to fixed widths or remain\n  resizable\n- **Smart Sash Behavior**: Fixed panes use custom layout without\n  interactive sash handles\n- **Menu Bar Integration**: Seamless menu bar support across all window\n  types\n- **Beautiful UI**: Modern, professional appearance with smooth\n  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)\n> 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)\n> for detailed cross-platform icon support documentation.**\n\n## Requirements\n\n- **Python**: 3.9 to 3.13\n- **Dependencies**: None (uses Python standard library only)\n- **Platforms**: Windows, macOS, Linux\n\n## Installation\n\n### From PyPI (Recommended)\n\n```bash\npip install threepanewindows\n```\n\n### From Source\n\n```bash\ngit clone https://github.com/stntg/threepanewindows.git\ncd threepanewindows\npip install -e .\n```\n\n### Development Installation\n\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\nwindow:\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)\n> 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## System 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.2.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": "5b4c0202d0bb9a46c2e53d7a872546730a821b3fbcd1133c5a3948d4eb871416",
                "md5": "e4896129c958dcf1bd210bed4dccf123",
                "sha256": "b7325c5101fec58dd723d071d767d1b95b091af268898fc6177b55abc745d02b"
            },
            "downloads": -1,
            "filename": "threepanewindows-1.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "e4896129c958dcf1bd210bed4dccf123",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 82193,
            "upload_time": "2025-07-31T20:09:37",
            "upload_time_iso_8601": "2025-07-31T20:09:37.900831Z",
            "url": "https://files.pythonhosted.org/packages/5b/4c/0202d0bb9a46c2e53d7a872546730a821b3fbcd1133c5a3948d4eb871416/threepanewindows-1.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ad5e2dd94773d77544b1e1452055a4e8e14244149db082e9d2674c1bb99edb6d",
                "md5": "291e0ff48c4f6e0dc869cdd75057f783",
                "sha256": "9b81c19445312f5d2ce355c95ee9ce841b0e0600b76c6e6b3e8c71ed07e75566"
            },
            "downloads": -1,
            "filename": "threepanewindows-1.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "291e0ff48c4f6e0dc869cdd75057f783",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 99491,
            "upload_time": "2025-07-31T20:09:39",
            "upload_time_iso_8601": "2025-07-31T20:09:39.730066Z",
            "url": "https://files.pythonhosted.org/packages/ad/5e/2dd94773d77544b1e1452055a4e8e14244149db082e9d2674c1bb99edb6d/threepanewindows-1.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-31 20:09:39",
    "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: 4.12270s