Skip to content

Arceion/arceion-qt

Repository files navigation

Arceion Logo

Arceion Qt

A professional collection of Qt components and framework for Python.

PyPI version Python versions License Code style: black


Arceion Qt is a comprehensive suite of UI components and a structured framework designed to accelerate the development of desktop applications using PyQt6. It provides a robust architecture for managing views, navigation, asynchronous tasks, and API interactions.

Key Features

  • Structured UI Framework: Decoupled Window and View architecture for clean application flow.
  • Advanced Icon System: Integrated Google Material Symbols support with customizable styles (Outlined, Rounded, Sharp).
  • Asynchronous Execution: Built-in ThreadPool and Worker system for responsive UIs.
  • API Controller: Simplified REST API interaction with automatic retry logic and authentication support.
  • ORM Integration: Ready-to-use SQLAlchemy-based database layer.
  • Theming & Styles: Flexible theme management and utility functions for CSS/QSS styling.
  • Logging: Integrated logging system for better debugging and monitoring.

Installation

Install Arceion Qt using pip:

pip install arceion-qt

Dependencies

  • PyQt6
  • SQLAlchemy
  • Requests
  • Cryptography
  • FontTools

Quick Start

1. Creating a Basic Window and View

from arceion.qt.core import Window, View
from PyQt6.QtWidgets import QLabel, QVBoxLayout

class MainView(View):
    def onCreate(self):
        layout = QVBoxLayout(self)
        layout.addWidget(QLabel("Hello from Arceion Qt!"))

    def onResume(self):
        print("View resumed")

    def onDestroy(self) -> bool:
        return super().onDestroy()

def main():
    import sys
    from PyQt6.QtWidgets import QApplication

    app = QApplication(sys.argv)
    window = Window()
    window.navigate(MainView)
    window.show()
    sys.exit(app.exec())

if __name__ == "__main__":
    main()

2. Using Icons

from arceion.qt.res import Icons
from PyQt6.QtWidgets import QPushButton

# Access material symbols easily
button = QPushButton()
button.setIcon(Icons.search.toPixmap(size=24, color="#FFFFFF"))

3. Background Tasks

from arceion.qt.thread import ThreadPool

def heavy_computation(data):
    # Perform long-running task
    return f"Processed {data}"

def on_finished(result):
    print(f"Task result: {result}")

ThreadPool.start(heavy_computation, "my data", callback=on_finished)

Documentation

For full documentation, please visit the Wiki.

Project Structure

  • arceion.qt.core: Core Window and View management.
  • arceion.qt.api: REST API client and controllers.
  • arceion.qt.db: Database and ORM utilities.
  • arceion.qt.res: Resource management (Icons, Themes, Colors).
  • arceion.qt.thread: Multithreading and worker pools.
  • arceion.qt.util: General purpose UI and stylesheet utilities.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under a Proprietary License. See pyproject.toml for more information.


Built with ❤️ by Arceion

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors