Skip to main content

EzQt-Widgets

PyPI version Python versions PyPI status License CI Docs uv linter type checker

EzQt-Widgets Logo

EzQt-Widgets is a modern collection of custom and reusable Qt widgets for PySide6 featuring advanced animated components, full type hints, and a simple API suitable for professional desktop applications.

📦 Installation

uv add ezqt-widgets

Or with pip:

pip install ezqt-widgets

Or from source:

git clone https://github.com/neuraaak/ezqt-widgets.git
cd ezqt-widgets && uv sync --all-extras

🚀 Quick Start

from ezqt_widgets import DateButton, IconButton, ToggleSwitch, AutoCompleteInput
from PySide6.QtWidgets import QApplication, QVBoxLayout, QWidget

app = QApplication([])
window = QWidget()
layout = QVBoxLayout()

# Create widgets
date_button = DateButton(placeholder="Select a date")
icon_button = IconButton(icon="path/to/icon.png", text="Click me")
toggle = ToggleSwitch(checked=True)
auto_input = AutoCompleteInput(completions=["Option 1", "Option 2", "Option 3"])

# Connect signals
date_button.dateChanged.connect(lambda date: print(f"Date: {date}"))
icon_button.clicked.connect(lambda: print("Button clicked"))
toggle.toggled.connect(lambda checked: print(f"Toggle: {checked}"))

# Add to layout
layout.addWidget(date_button)
layout.addWidget(icon_button)
layout.addWidget(toggle)
layout.addWidget(auto_input)

window.setLayout(layout)
window.show()
app.exec()

🎯 Key Features

  • ✅ PySide6 Compatible: All widgets based on PySide6
  • ✅ Full Type Hints: Complete typing support for IDEs and linters
  • ✅ Qt Signals: Native integration with Qt signal system
  • ✅ QSS Styling: Complete Qt stylesheet support
  • ✅ Smooth Animations: Configurable animations with easing curves
  • ✅ Accessibility: Accessibility features support
  • ✅ Comprehensive Tests: Complete test suite (~211 tests, ~80% coverage)
  • ✅ CLI Tools: Command-line interface for examples and testing

📚 Documentation

Full documentation is available online: neuraaak.github.io/ezqt-widgets

🧪 Testing

Comprehensive test suite with 211+ test cases covering all widgets.

# Install dev dependencies
uv sync --all-extras

# Run all tests
uv run pytest tests/

# Run specific test types
uv run python tests/run_tests.py --type unit

# With coverage
uv run python tests/run_tests.py --coverage

# Using CLI
ezqt test --unit
ezqt test --coverage

See the Testing Guide for complete details.

🛠️ Development Setup

For contributors and developers:

# Clone and install in development mode
git clone https://github.com/neuraaak/ezqt-widgets.git
cd ezqt-widgets
uv sync --all-extras

# Install pre-commit hooks
uv run pre-commit install

# Verify CLI installation
ezqt --version
ezqt info

See the Development Guide for detailed setup instructions.

🎨 Available Widgets

🎛️ Button Widgets (4)

Widget Description
DateButton Date picker button with integrated calendar
DatePickerDialog Modal calendar dialog for date selection
IconButton Button with icon support and optional text
LoaderButton Button with integrated loading animation

⌨️ Input Widgets (6)

Widget Description
AutoCompleteInput Text field with autocompletion
FilePickerInput Field with folder button opening a file/directory dialog
PasswordInput Password field with strength bar and visibility toggle
SearchInput Search field with history management
SpinBoxInput Numeric spin box with − and + buttons
TabReplaceTextEdit Text editor with tab replacement

🏷️ Label Widgets (4)

Widget Description
ClickableTagLabel Clickable tag with toggle state
FramedLabel Framed label for advanced styling
HoverLabel Label with hover icon display
IndicatorLabel Status indicator with colored LED

🔧 Miscellaneous Widgets (9)

Widget Description
CircularTimer Animated circular timer
CollapsibleSection Accordion-style section with expand/collapse animation
DraggableItem Draggable list item component
DraggableList List with draggable and reorderable items
NotificationBanner Animated slide-down banner with INFO/WARNING/ERROR/SUCCESS levels
OptionSelector Option selector with animated selector
ThemeIcon QIcon that adapts color to the active dark/light theme
ToggleIcon Toggleable icon (open/closed states)
ToggleSwitch Modern toggle switch with animation

📦 Dependencies

  • PySide6>=6.7.3,<7.0.0 – Qt for Python framework
  • click>=8.2.1 – Command-line interface toolkit
  • rich>=13.0.0 – Terminal formatting and output
  • PyYAML>=6.0 – YAML configuration support
  • typing_extensions>=4.0.0 – Extended typing support

🔧 Quick API Reference

from ezqt_widgets import (
    # Button widgets
    DateButton, DatePickerDialog, IconButton, LoaderButton,
    # Input widgets
    AutoCompleteInput, FilePickerInput, PasswordInput,
    SearchInput, SpinBoxInput, TabReplaceTextEdit,
    # Label widgets
    ClickableTagLabel, FramedLabel, HoverLabel, IndicatorLabel,
    # Misc widgets
    CircularTimer, CollapsibleSection, DraggableItem, DraggableList,
    NotificationBanner, OptionSelector, ThemeIcon, ToggleIcon, ToggleSwitch,
)

# Button examples
date_btn = DateButton(placeholder="Select date")
icon_btn = IconButton(icon="path/to/icon.png", text="Click")
loader_btn = LoaderButton(loading_text="Loading...")

# Input examples
auto_input = AutoCompleteInput(completions=["A", "B", "C"])
search_input = SearchInput(max_history=20)
spin_box = SpinBoxInput(minimum=0, maximum=100, value=50)

# Misc examples
timer = CircularTimer(duration=5000, loop=True)
switch = ToggleSwitch(checked=True)
selector = OptionSelector(options=["Small", "Medium", "Large"])

📄 License

MIT License – See LICENSE file for details.


EzQt-Widgets – Modern, typed, and beautiful Qt widgets for Python. 🎨

Metadata

Release files for ezqt-widgets 2.7.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ezqt-widgets 2.7.3
File Size Uploaded
ezqt_widgets-2.7.3.tar.gz 213.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ezqt-widgets 2.7.3
File Interpreter ABI Platform
ezqt_widgets-2.7.3-py3-none-any.whl Python 3 none any Details

Total release size: 313.4 kB

Release files / ezqt_widgets-2.7.3.tar.gz

Download URL ezqt_widgets-2.7.3.tar.gz
Size 213.9 kB
Tags Source
SHA-256 checksum
How to use checksums
8ddd814b888492ad52486bf0b1a4064148d9de98ee2a9ed8ff6410151a289091
BLAKE2b-256 checksum
How to use checksums
72e8da012a5a703c8d4a5c12256aabb68feb77fe538b6d9f3675182179857a23
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / ezqt_widgets-2.7.3-py3-none-any.whl

Download URL ezqt_widgets-2.7.3-py3-none-any.whl
Size 99.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
59376eb3f7d1bef83990bed26818d0ff942b70162c2c188f537056e1925de179
BLAKE2b-256 checksum
How to use checksums
1619d7a035b343d7188560c5c72c61b75734973427ba1d24ecdc6b48fbf5763f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

2.7.3 This release

2 release files

2.7.2

2 release files

2.7.1

2 release files

2.6.6

2 release files

2.6.4

2 release files

2.6.3

2 release files

2.6.2

2 release files

2.6.0

2 release files

2.5.5

2 release files

2.5.4

2 release files

2.5.3

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.3.4

2 release files

2.3.3

2 release files

2.3.2

2 release files

2.3.0

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.0

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page