qt-ingot


Nameqt-ingot JSON
Version 0.0.2 PyPI version JSON
download
home_pageNone
SummaryA lightweight, themeable boilerplate for creating tab-based PyQt applications.
upload_time2025-10-19 02:39:23
maintainerNone
docs_urlNone
authorNone
requires_python>=3.12
licenseMIT
keywords gui pyqt pyqt6 qt scaffolding template
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <h1 align="center">
  <img src="https://raw.githubusercontent.com/Yrrrrrf/qt-ingot/main/resources/img/template.png" alt="qt-ingot Icon" width="128" height="128">
  <div align="center">qt-ingot</div>
</h1>

<div align="center">

[![GitHub: Repo](https://img.shields.io/badge/qt--ingot-58A6FF?&logo=github)](https://github.com/Yrrrrrf/qt-ingot)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow)](./LICENSE)
[![PyPI version](https://img.shields.io/pypi/v/qt-ingot)](https://pypi.org/project/qt-ingot/)
[![PyPI Downloads](https://img.shields.io/pypi/dm/qt-ingot)](https://pypi.org/project/qt-ingot/)
[![Version](https://img.shields.io/badge/version-0.0.2-blue.svg)](https://github.com/Yrrrrrf/qt-ingot/releases)

</div>

> A lightweight, themeable boilerplate for creating tab-based PyQt applications.

`qt-ingot` is a Python library designed to accelerate desktop application development by providing a self-configuring main window, an intelligent SASS-based theming engine, a data-driven menu bar, and a flexible layout system.

## 🚦 Getting Started

### Installation

```bash
uv add qt-ingot
```

#### Quick Start

Here's a minimal example to get you started:

```python
# your_project/main.py
import sys
from PyQt6.QtWidgets import QApplication, QLabel
from ingot.app import IngotApp
from ingot.views.base import BaseView

# 1. Define your application's configuration
APP_CONFIG = {
    "title": "My Awesome Ingot App",
    "icon": "img.my_icon"  # A rune-lib friendly path
}

# 2. Define your menu structure
MENU_CONFIG = {
    "File": [
        {"name": "Exit", "shortcut": "Esc", "function": sys.exit}
    ],
    "Help": [
        {"name": "About", "function": lambda: print("About This App!")}
    ]
}

# 3. Define the content for your tabs
class MyCustomView(BaseView):
    def __init__(self):
        super().__init__()
        self.layout().addWidget(QLabel("This is my application's content!"))

# 4. Launch the app
def main():
    app = QApplication(sys.argv)
    
    main_window = IngotApp(view_factory=MyCustomView, config=APP_CONFIG)
    main_window.set_menu(MENU_CONFIG)

    main_window.show()
    sys.exit(app.exec())

if __name__ == "__main__":
    main()
```

## 📄 License

This project is licensed under the **MIT License**. See the [LICENSE](./LICENSE) file for details.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "qt-ingot",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.12",
    "maintainer_email": null,
    "keywords": "gui, pyqt, pyqt6, qt, scaffolding, template",
    "author": null,
    "author_email": "Fernando Bryan Reza Campos <fer.rezac@outlook.com>",
    "download_url": "https://files.pythonhosted.org/packages/52/3b/738ed7117ff50853c91b51ecd432a093141cf637c6df38a440fbb3351328/qt_ingot-0.0.2.tar.gz",
    "platform": null,
    "description": "<h1 align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/Yrrrrrf/qt-ingot/main/resources/img/template.png\" alt=\"qt-ingot Icon\" width=\"128\" height=\"128\">\n  <div align=\"center\">qt-ingot</div>\n</h1>\n\n<div align=\"center\">\n\n[![GitHub: Repo](https://img.shields.io/badge/qt--ingot-58A6FF?&logo=github)](https://github.com/Yrrrrrf/qt-ingot)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow)](./LICENSE)\n[![PyPI version](https://img.shields.io/pypi/v/qt-ingot)](https://pypi.org/project/qt-ingot/)\n[![PyPI Downloads](https://img.shields.io/pypi/dm/qt-ingot)](https://pypi.org/project/qt-ingot/)\n[![Version](https://img.shields.io/badge/version-0.0.2-blue.svg)](https://github.com/Yrrrrrf/qt-ingot/releases)\n\n</div>\n\n> A lightweight, themeable boilerplate for creating tab-based PyQt applications.\n\n`qt-ingot` is a Python library designed to accelerate desktop application development by providing a self-configuring main window, an intelligent SASS-based theming engine, a data-driven menu bar, and a flexible layout system.\n\n## \ud83d\udea6 Getting Started\n\n### Installation\n\n```bash\nuv add qt-ingot\n```\n\n#### Quick Start\n\nHere's a minimal example to get you started:\n\n```python\n# your_project/main.py\nimport sys\nfrom PyQt6.QtWidgets import QApplication, QLabel\nfrom ingot.app import IngotApp\nfrom ingot.views.base import BaseView\n\n# 1. Define your application's configuration\nAPP_CONFIG = {\n    \"title\": \"My Awesome Ingot App\",\n    \"icon\": \"img.my_icon\"  # A rune-lib friendly path\n}\n\n# 2. Define your menu structure\nMENU_CONFIG = {\n    \"File\": [\n        {\"name\": \"Exit\", \"shortcut\": \"Esc\", \"function\": sys.exit}\n    ],\n    \"Help\": [\n        {\"name\": \"About\", \"function\": lambda: print(\"About This App!\")}\n    ]\n}\n\n# 3. Define the content for your tabs\nclass MyCustomView(BaseView):\n    def __init__(self):\n        super().__init__()\n        self.layout().addWidget(QLabel(\"This is my application's content!\"))\n\n# 4. Launch the app\ndef main():\n    app = QApplication(sys.argv)\n    \n    main_window = IngotApp(view_factory=MyCustomView, config=APP_CONFIG)\n    main_window.set_menu(MENU_CONFIG)\n\n    main_window.show()\n    sys.exit(app.exec())\n\nif __name__ == \"__main__\":\n    main()\n```\n\n## \ud83d\udcc4 License\n\nThis project is licensed under the **MIT License**. See the [LICENSE](./LICENSE) file for details.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A lightweight, themeable boilerplate for creating tab-based PyQt applications.",
    "version": "0.0.2",
    "project_urls": {
        "Homepage": "https://github.com/Yrrrrrf/qt-ingot",
        "Repository": "https://github.com/Yrrrrrf/qt-ingot"
    },
    "split_keywords": [
        "gui",
        " pyqt",
        " pyqt6",
        " qt",
        " scaffolding",
        " template"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "59f90ddaad7e6b779c4700d12bd5d4831dac54ff6afd99d1c9c86a4739fb464c",
                "md5": "b9a9c51f29a98a0d31f6e4dc127400c0",
                "sha256": "dc09bac6c5d3894a27dcfe94585864f5a284d96bb93313ebc8ef8ac1b2a1cdb7"
            },
            "downloads": -1,
            "filename": "qt_ingot-0.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b9a9c51f29a98a0d31f6e4dc127400c0",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.12",
            "size": 13783,
            "upload_time": "2025-10-19T02:39:22",
            "upload_time_iso_8601": "2025-10-19T02:39:22.269409Z",
            "url": "https://files.pythonhosted.org/packages/59/f9/0ddaad7e6b779c4700d12bd5d4831dac54ff6afd99d1c9c86a4739fb464c/qt_ingot-0.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "523b738ed7117ff50853c91b51ecd432a093141cf637c6df38a440fbb3351328",
                "md5": "0b0685159a4c6396baad74f872f0e98f",
                "sha256": "fc18bbf3891e60ab425a51511b34522a937a0758c431354d811ef78cafe67c57"
            },
            "downloads": -1,
            "filename": "qt_ingot-0.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "0b0685159a4c6396baad74f872f0e98f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.12",
            "size": 29315,
            "upload_time": "2025-10-19T02:39:23",
            "upload_time_iso_8601": "2025-10-19T02:39:23.510617Z",
            "url": "https://files.pythonhosted.org/packages/52/3b/738ed7117ff50853c91b51ecd432a093141cf637c6df38a440fbb3351328/qt_ingot-0.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-19 02:39:23",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Yrrrrrf",
    "github_project": "qt-ingot",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "qt-ingot"
}
        
Elapsed time: 1.73609s