This repository seeks to accumulate Qt-based widgets for python (PyQt & PySide) that are not provided in the native QtWidgets module.
To get started fork this repository, and clone your fork:
# clone your fork
git clone https://github.com/<your_organization>/superqt
cd superqt
# install pre-commit hooks
pre-commit install
# install in editable mode
pip install -e .[dev]
# run tests & make sure everything is working!
pytest
All widgets must be well-tested, and should work on:
- Python 3.8 and above
- PyQt5 (5.11 and above) & PyQt6
- PySide2 (5.11 and above) & PySide6
- macOS, Windows, & Linux
All widgets should try to match the native Qt API as much as possible:
- Methods should use
camelCase
naming. - Getters/setters use the
attribute()/setAttribute()
pattern. - Private methods should use
_camelCaseNaming
. __init__
methods should be like Qt constructors, meaning they often don't include parameters for most of the widgets properties.- When possible, widgets should inherit from the most similar native widget available. It should strictly match the Qt API where it exists, and attempt to cover as much of the native API as possible; this includes properties, public functions, signals, and public slots.
Tests can be run in the current environment with pytest
.