tkinter-layout-helpers


Nametkinter-layout-helpers JSON
Version 0.6.0 PyPI version JSON
download
home_pageNone
SummaryA library which is intended to simplify a placement of widgets with .grid() and .pack() methods
upload_time2025-08-03 14:21:06
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords grid pack tkinter
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Tkinter Layout Helpers

[![Python package](https://github.com/insolor/tkinter-layout-helpers/actions/workflows/python-tests.yml/badge.svg)](https://github.com/insolor/tkinter-layout-helpers/actions/workflows/python-tests.yml)
[![documentation](https://img.shields.io/badge/docs-mkdocs-708FCC.svg?style=flat)](https://insolor.github.io/tkinter-layout-helpers/)
[![Coverage Status](https://coveralls.io/repos/github/insolor/tkinter-layout-helpers/badge.svg?branch=master)](https://coveralls.io/github/insolor/tkinter-layout-helpers?branch=master)
[![PyPI](https://img.shields.io/pypi/v/tkinter-layout-helpers)](https://pypi.org/project/tkinter-layout-helpers/)

A library which is intended to simplify a placement of widgets with `.grid()` and `.pack()` methods:

- avoid manual calculation of indices of columns and rows when you add a widget;
- avoid typing-in some common parameters (like `sticky=tk.EW`) each time you add a widget;
- and more...

Work in progress.

As an example, this code:

```python
import tkinter as tk
from tkinter_layout_helpers.grid_helper import grid_manager

root = tk.Tk()

with grid_manager(root, sticky=tk.EW) as grid:
    with grid.new_row() as row:
        row.add(tk.Label(text="0", width=20))
        row.add(tk.Label(text="1", width=20))
        row.add(tk.Label(text="2", width=20))
        row.add(tk.Label(text="3", width=20))
        row.add(tk.Label(text="4", width=20))

    with grid.new_row() as row:
        row.add(tk.Entry()).set_column_span(4)
        row.add(tk.Entry()).set_column_span(1)
    
    with grid.new_row() as row:
        row.add(tk.Entry()).set_column_span(3)
        row.add(tk.Entry()).set_column_span(2)
    
    with grid.new_row() as row:
        row.add(tk.Entry()).set_column_span(2)
        row.add(tk.Entry()).set_column_span(3)

    with grid.new_row() as row:
        row.add(tk.Entry()).set_column_span(1)
        row.add(tk.Entry()).set_column_span(4)

    for column in grid.columns:
        column.configure(weight=1)

root.mainloop()
```

Gives the following result:

![image](https://github.com/insolor/tkinter-layout-helpers/raw/master/assets/staircase.png)

Example for the `pack_manager`:

```python
import tkinter as tk

from tkinter_layout_helpers import pack_manager

root = tk.Tk()

with pack_manager(root, fill=tk.BOTH) as packer:
    packer.pack_left(tk.Label(text="Left bar", relief=tk.RAISED))
    packer.pack_top(tk.Label(text="Top bar", relief=tk.RAISED))
    packer.pack_bottom(tk.Label(text="Bottom bar", relief=tk.RAISED))
    packer.pack_right(tk.Label(text="Right bar", relief=tk.RAISED))
    packer.pack_expanded(tk.Text())

root.mainloop()
```

Result:

![image](https://github.com/insolor/tkinter-layout-helpers/raw/master/assets/pack_sidebars.png)

More examples see here: [examples](https://github.com/insolor/tkinter_layout_helpers/tree/master/examples)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "tkinter-layout-helpers",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "grid, pack, tkinter",
    "author": null,
    "author_email": "insolor <insolor@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/cc/1f/d404c1a73481d5a978ac12dd1830a28c7eb8e2bf9028397a6a37ef4412ed/tkinter_layout_helpers-0.6.0.tar.gz",
    "platform": null,
    "description": "# Tkinter Layout Helpers\n\n[![Python package](https://github.com/insolor/tkinter-layout-helpers/actions/workflows/python-tests.yml/badge.svg)](https://github.com/insolor/tkinter-layout-helpers/actions/workflows/python-tests.yml)\n[![documentation](https://img.shields.io/badge/docs-mkdocs-708FCC.svg?style=flat)](https://insolor.github.io/tkinter-layout-helpers/)\n[![Coverage Status](https://coveralls.io/repos/github/insolor/tkinter-layout-helpers/badge.svg?branch=master)](https://coveralls.io/github/insolor/tkinter-layout-helpers?branch=master)\n[![PyPI](https://img.shields.io/pypi/v/tkinter-layout-helpers)](https://pypi.org/project/tkinter-layout-helpers/)\n\nA library which is intended to simplify a placement of widgets with `.grid()` and `.pack()` methods:\n\n- avoid manual calculation of indices of columns and rows when you add a widget;\n- avoid typing-in some common parameters (like `sticky=tk.EW`) each time you add a widget;\n- and more...\n\nWork in progress.\n\nAs an example, this code:\n\n```python\nimport tkinter as tk\nfrom tkinter_layout_helpers.grid_helper import grid_manager\n\nroot = tk.Tk()\n\nwith grid_manager(root, sticky=tk.EW) as grid:\n    with grid.new_row() as row:\n        row.add(tk.Label(text=\"0\", width=20))\n        row.add(tk.Label(text=\"1\", width=20))\n        row.add(tk.Label(text=\"2\", width=20))\n        row.add(tk.Label(text=\"3\", width=20))\n        row.add(tk.Label(text=\"4\", width=20))\n\n    with grid.new_row() as row:\n        row.add(tk.Entry()).set_column_span(4)\n        row.add(tk.Entry()).set_column_span(1)\n    \n    with grid.new_row() as row:\n        row.add(tk.Entry()).set_column_span(3)\n        row.add(tk.Entry()).set_column_span(2)\n    \n    with grid.new_row() as row:\n        row.add(tk.Entry()).set_column_span(2)\n        row.add(tk.Entry()).set_column_span(3)\n\n    with grid.new_row() as row:\n        row.add(tk.Entry()).set_column_span(1)\n        row.add(tk.Entry()).set_column_span(4)\n\n    for column in grid.columns:\n        column.configure(weight=1)\n\nroot.mainloop()\n```\n\nGives the following result:\n\n![image](https://github.com/insolor/tkinter-layout-helpers/raw/master/assets/staircase.png)\n\nExample for the `pack_manager`:\n\n```python\nimport tkinter as tk\n\nfrom tkinter_layout_helpers import pack_manager\n\nroot = tk.Tk()\n\nwith pack_manager(root, fill=tk.BOTH) as packer:\n    packer.pack_left(tk.Label(text=\"Left bar\", relief=tk.RAISED))\n    packer.pack_top(tk.Label(text=\"Top bar\", relief=tk.RAISED))\n    packer.pack_bottom(tk.Label(text=\"Bottom bar\", relief=tk.RAISED))\n    packer.pack_right(tk.Label(text=\"Right bar\", relief=tk.RAISED))\n    packer.pack_expanded(tk.Text())\n\nroot.mainloop()\n```\n\nResult:\n\n![image](https://github.com/insolor/tkinter-layout-helpers/raw/master/assets/pack_sidebars.png)\n\nMore examples see here: [examples](https://github.com/insolor/tkinter_layout_helpers/tree/master/examples)\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A library which is intended to simplify a placement of widgets with .grid() and .pack() methods",
    "version": "0.6.0",
    "project_urls": {
        "Documentation": "https://insolor.github.io/tkinter-layout-helpers",
        "Homepage": "https://github.com/insolor/tkinter-layout-helpers",
        "Repository": "https://github.com/insolor/tkinter-layout-helpers"
    },
    "split_keywords": [
        "grid",
        " pack",
        " tkinter"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "abcb71609ae33c4958a6ebe59e20e5a80bdd0320c2f982e84b13fd8db4e726de",
                "md5": "aab6810fe4070c2b6a60d66424ecbd09",
                "sha256": "8ce16756edf4e2dbe5c830de959f9ea9673eee35c9710768f958d6bb32b5f6d2"
            },
            "downloads": -1,
            "filename": "tkinter_layout_helpers-0.6.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "aab6810fe4070c2b6a60d66424ecbd09",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 7435,
            "upload_time": "2025-08-03T14:21:04",
            "upload_time_iso_8601": "2025-08-03T14:21:04.882075Z",
            "url": "https://files.pythonhosted.org/packages/ab/cb/71609ae33c4958a6ebe59e20e5a80bdd0320c2f982e84b13fd8db4e726de/tkinter_layout_helpers-0.6.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "cc1fd404c1a73481d5a978ac12dd1830a28c7eb8e2bf9028397a6a37ef4412ed",
                "md5": "aacad38be507548cc095f92933f44b86",
                "sha256": "bb9d62694bfee0d2ab85e71dd8a6fde93154372c3f0af06b7485fa89f2371854"
            },
            "downloads": -1,
            "filename": "tkinter_layout_helpers-0.6.0.tar.gz",
            "has_sig": false,
            "md5_digest": "aacad38be507548cc095f92933f44b86",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 55940,
            "upload_time": "2025-08-03T14:21:06",
            "upload_time_iso_8601": "2025-08-03T14:21:06.075644Z",
            "url": "https://files.pythonhosted.org/packages/cc/1f/d404c1a73481d5a978ac12dd1830a28c7eb8e2bf9028397a6a37ef4412ed/tkinter_layout_helpers-0.6.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-03 14:21:06",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "insolor",
    "github_project": "tkinter-layout-helpers",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "tkinter-layout-helpers"
}
        
Elapsed time: 4.36139s