Skip to main content

Lightweight framework based on PySide6 to quickly build modern desktop applications, with integrated resource, theme, and reusable component management.

Project description

EzQt-App

Description

EzQt-App is a Python framework designed to make it easy to create modern Qt applications, based on a template by Wanderson M. Pimenta. It automates resource management, generates all required files, and offers a fast project bootstrap experience with a CLI command.

๐Ÿš€ New PySide6 6.9.1 Features

QMessageLogger

The project now includes a utility to use PySide6 6.9.1's QMessageLogger:

from ezqt_app.utils.qmessage_logger import QtLogger

logger = QtLogger("MyApp")
logger.info("Application started")
logger.debug("Debug mode enabled")
logger.warning("Warning: experimental feature")

Type Annotations Improvements

  • Complete type annotations for better maintainability
  • More robust code with PySide6 6.9.1 improvements
  • Support for new APIs and features
  • Better autocompletion in IDEs

Windows ARM64 Support

  • Extended compatibility with new architectures
  • Improved performance on ARM64 systems

โœจ Main Features

  • Automatic generation of asset folders and files (icons, images, themes, etc.)
  • Dynamic themes (light/dark) with integrated toggle
  • CLI command ezqt_init to quickly initialize a new project
  • Ready-to-use main.py example generated automatically
  • Modular and extensible structure
  • Global translation system with multi-language support
  • Advanced resource manager with automatic detection
  • Custom widgets with animations and themes

๐Ÿ“ฆ Installation

Install the module via pip (recommended):

pip install ezqt_app

Or locally:

git clone https://github.com/neuraaak/ezqt_app.git
cd ezqt_app
pip install .

๐Ÿ”ง Dependencies

Main dependencies are installed automatically:

  • PySide6==6.9.1 - Modern Qt framework
  • PyYaml==6.0.2 - YAML file management
  • colorama==0.4.6 - Terminal colors
  • requests==2.32.3 - HTTP requests
  • ezqt-widgets>=2.0.0 - Custom widgets

๐Ÿš€ Project Initialization

After installation, initialize a new project in an empty folder with:

ezqt_init

This command creates the base structure, resource folders, and a sample main.py file.

๐Ÿ’ป Minimal Usage Example

import ezqt_app.main as ezqt
from ezqt_app.app import EzQt_App, EzApplication
import sys

ezqt.init()
app = EzApplication(sys.argv)
window = EzQt_App(themeFileName="main_theme.qss")
window.show()
app.exec()

๐ŸŒ Translation System

The framework includes a complete translation system:

from ezqt_app.kernel.translation_manager import get_translation_manager

# Get the translation manager
tm = get_translation_manager()

# Change language
tm.load_language("English")

# Translate text
translated = tm.translate("Hello World")

Supported languages: English, French, Spanish, German

๐Ÿ“ Generated Project Structure

my_project/
โ”œโ”€โ”€ main.py                    # Application entry point
โ”œโ”€โ”€ bin/                       # Project resources
โ”‚   โ”œโ”€โ”€ config/               # Configuration files
โ”‚   โ”œโ”€โ”€ fonts/                # Custom fonts
โ”‚   โ”œโ”€โ”€ icons/                # Application icons
โ”‚   โ”œโ”€โ”€ images/               # Images and graphics
โ”‚   โ”œโ”€โ”€ themes/               # QSS theme files
โ”‚   โ”œโ”€โ”€ modules/              # Custom modules
โ”‚   โ””โ”€โ”€ translations/         # Translation files (.ts, .qm)
โ””โ”€โ”€ _temp/                    # Temporary files (if migration)

๐Ÿ—๏ธ Project Structure

ezqt_app/
โ”œโ”€โ”€ README.md                    # Main documentation
โ”œโ”€โ”€ CHANGELOG.md                 # Version history
โ”œโ”€โ”€ docs/                        # Technical documentation
โ”‚   โ”œโ”€โ”€ README.md               # Documentation overview
โ”‚   โ””โ”€โ”€ TRANSLATION_SYSTEM.md   # Translation system
โ”œโ”€โ”€ tests/                       # Unit and integration tests
โ”‚   โ”œโ”€โ”€ README.md               # Test documentation
โ”‚   โ”œโ”€โ”€ unit/                   # Unit tests
โ”‚   โ”œโ”€โ”€ integration/            # Integration tests
โ”‚   โ””โ”€โ”€ fixtures/               # Test data
โ”œโ”€โ”€ ezqt_app/                   # Main source code
โ”‚   โ”œโ”€โ”€ kernel/                 # Kernel components
โ”‚   โ”‚   โ”œโ”€โ”€ translation_manager.py  # Translation manager
โ”‚   โ”‚   โ”œโ”€โ”€ app_functions.py        # Application functions
โ”‚   โ”‚   โ”œโ”€โ”€ ui_functions.py         # UI functions
โ”‚   โ”‚   โ””โ”€โ”€ ...                    # Other components
โ”‚   โ”œโ”€โ”€ widgets/                # Custom widgets
โ”‚   โ”‚   โ”œโ”€โ”€ core/               # Base widgets
โ”‚   โ”‚   โ”œโ”€โ”€ extended/           # Extended widgets
โ”‚   โ”‚   โ””โ”€โ”€ custom_grips/       # Resize widgets
โ”‚   โ”œโ”€โ”€ utils/                  # Utilities
โ”‚   โ”‚   โ”œโ”€โ”€ cli.py              # Command line interface
โ”‚   โ”‚   โ”œโ”€โ”€ qmessage_logger.py  # Logging system
โ”‚   โ”‚   โ””โ”€โ”€ create_qm_files.py  # .qm file creation
โ”‚   โ””โ”€โ”€ resources/              # Embedded resources
โ”œโ”€โ”€ modules/                    # External modules
โ””โ”€โ”€ pyproject.toml             # Project configuration

๐ŸŽจ Customization

Themes

  • Edit the theme in bin/themes/main_theme.qss or use the toggle in the interface
  • Add your own icons/images in the corresponding folders

Custom Widgets

The framework includes several ready-to-use widgets:

from ezqt_app.widgets.core.menu import Menu
from ezqt_app.widgets.core.header import Header
from ezqt_app.widgets.extended.menu_button import MenuButton

# Create custom widgets
menu = Menu()
header = Header()
menu_button = MenuButton("My Button")

๐Ÿ”ง Included Utilities

CLI Commands

  • ezqt_init - Project initialization
  • ezqt_qm_convert - Convert .ts files to .qm

Advanced Logging

from ezqt_app.utils.qmessage_logger import QtLogger

logger = QtLogger("MyApp")
logger.info("Application started")
logger.debug("Debug mode enabled")
logger.warning("Warning: experimental feature")
logger.error("Error detected")

๐Ÿงช Testing

The framework includes comprehensive automated tests:

# Unit tests
python -m pytest tests/unit/

# Integration tests
python -m pytest tests/integration/

# PySide6 migration tests
python _temp/tests/test_remaining_modules.py

๐Ÿ“š Documentation

  • README.md - This file (overview)
  • docs/README.md - Detailed technical documentation
  • docs/TRANSLATION_SYSTEM.md - Translation system guide
  • CHANGELOG.md - Complete version history

๐Ÿค Contribution

Contributions are welcome! Submit your ideas, fixes, or extensions via issues or pull requests.

Contribution Guide

  1. Fork the project
  2. Create a branch for your feature
  3. Commit your changes
  4. Push to the branch
  5. Open a Pull Request

๐Ÿ“„ License & Credits

MIT License

This project is inspired by the template of Wanderson M. Pimenta. See the LICENSE file for details.

๐Ÿ†• Migration to PySide6 6.9.1

The project has been completely migrated to PySide6 6.9.1 with:

  • โœ… 21/21 files successfully migrated
  • โœ… No functional regressions
  • โœ… Significant code quality improvements
  • โœ… New PySide6 6.9.1 features integrated
  • โœ… Complete documentation created
  • โœ… Automated tools for future migrations

Migration Benefits

  • Improved performance thanks to PySide6 6.9.1 optimizations
  • More maintainable code with complete type annotations
  • Extended support with Windows ARM64
  • Enhanced stability with bug fixes
  • Enriched features with new APIs

EzQt-App 3.0.0 - Modern framework for Qt applications with PySide6 6.9.1 ๐Ÿš€

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ezqt_app-3.1.0.tar.gz (949.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ezqt_app-3.1.0-py3-none-any.whl (1.2 MB view details)

Uploaded Python 3

File details

Details for the file ezqt_app-3.1.0.tar.gz.

File metadata

  • Download URL: ezqt_app-3.1.0.tar.gz
  • Upload date:
  • Size: 949.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.3

File hashes

Hashes for ezqt_app-3.1.0.tar.gz
Algorithm Hash digest
SHA256 6d02d7b9595f9e2048a5f53da5cacafa94c979e92c2c2a155de4194ae03016c0
MD5 a636d2611adb7ddc4233d029c6cc43d2
BLAKE2b-256 7bdbc779117bb41c6fd1507c85d9a7883ac1d2b9be1463df40e54f0b1f11e6d6

See more details on using hashes here.

File details

Details for the file ezqt_app-3.1.0-py3-none-any.whl.

File metadata

  • Download URL: ezqt_app-3.1.0-py3-none-any.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.3

File hashes

Hashes for ezqt_app-3.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 05039425e8e9b7603be76cae4defff7dedfdcff6487b57d1b1e9bb8db465ca96
MD5 1832bb043a339e35d4b5bee9b686741c
BLAKE2b-256 fb41432b7015553446c6f6f3f47eb9551227e55e203478884d46dba9882b2218

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page