DeMille Lab Widgets for PyQt5
Small, reusable PyQt5 widgets developed for laboratory control-system interfaces.
The package improves several common Qt interactions, including preventing spin boxes and combo boxes from changing when the mouse wheel is used while the widget does not have focus. It also provides cursor-position-aware numeric stepping, scientific-notation input, convenience layouts, a configured plotting widget, and a table widget with frozen rows and columns.
Installation
Once the first release is published to PyPI:
python -m pip install demille-lab-widgets-pyqt5
Usage
from demille_lab_widgets import NewBox, NewDoubleSpinBox, NewSpinBox
voltage = NewDoubleSpinBox(range=(-10.0, 10.0), decimals=3, suffix=" V")
shots = NewSpinBox(range=(0, 100_000))
controls = NewBox(layout_type="form")
controls.frame.addRow("Voltage", voltage)
controls.frame.addRow("Shots", shots)
The public classes are:
NewBoxNewComboBoxNewSpinBoxNewDoubleSpinBoxScientificDoubleSpinBoxNewPlotNewScrollAreaFlexibleGridLayoutNewTableWidget
Behavior
NewSpinBox, NewDoubleSpinBox, and NewComboBox ignore mouse-wheel changes until they have keyboard focus. The numeric spin boxes also change their step size according to the cursor position. Keyboard tracking is disabled so typed values are committed when Enter is pressed or focus is lost.
Development
Create a virtual environment, then install the package in editable form:
python -m pip install -e ".[test]"
python -m unittest discover -s tests -v
python -m build
python -m twine check dist/*
Release status
The package implementation is maintained independently in this repository and is distributed under the MIT License. Runtime dependencies retain their own licenses; see Third-party notices.
Acknowledgements
The widget collection was originally developed for CeNTREX by Olivier Grasdijk and Jakob Kastelic. Qian Wang subsequently brought it into the SrF control software and developed additional improvements. Shaozhen Yang later adapted it for FrAg, extracted it into this standalone package, coordinated the licensing review, and prepared the public release. See the full project history and contributors.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file demille_lab_widgets_pyqt5-0.1.0.tar.gz.
File metadata
- Download URL: demille_lab_widgets_pyqt5-0.1.0.tar.gz
- Upload date:
- Size: 11.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
650d38bd3a0e387ccdd2598df2668d07693b7d7d60f485028505abe0238e0a02
|
|
| MD5 |
f9dc9bda1e2c23c97848a62d49ec5b1d
|
|
| BLAKE2b-256 |
173a32680bd848852627fd7476b7d35f11b9d3fca4805f8d95b0c248f2c7aba8
|
Provenance
The following attestation bundles were made for demille_lab_widgets_pyqt5-0.1.0.tar.gz:
Publisher:
release.yml on DeMille-Group-FrAg/demille-lab-widgets-pyqt5
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
demille_lab_widgets_pyqt5-0.1.0.tar.gz -
Subject digest:
650d38bd3a0e387ccdd2598df2668d07693b7d7d60f485028505abe0238e0a02 - Sigstore transparency entry: 2797556887
- Sigstore integration time:
-
Permalink:
DeMille-Group-FrAg/demille-lab-widgets-pyqt5@9ee78d52aca438ac6a4a4be56e061427a802ef3a -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/DeMille-Group-FrAg
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9ee78d52aca438ac6a4a4be56e061427a802ef3a -
Trigger Event:
release
-
Statement type:
File details
Details for the file demille_lab_widgets_pyqt5-0.1.0-py3-none-any.whl.
File metadata
- Download URL: demille_lab_widgets_pyqt5-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af352209361c48167e873917620a4dbd88fa8bbbb6560f426c5961a69953c015
|
|
| MD5 |
eee3d184ffc6b7817b1d0c7e63c851cd
|
|
| BLAKE2b-256 |
88baf9ea0ab6f8cafa92b095d83ba75c2ca549e2f099c13cb8447f9d67990216
|
Provenance
The following attestation bundles were made for demille_lab_widgets_pyqt5-0.1.0-py3-none-any.whl:
Publisher:
release.yml on DeMille-Group-FrAg/demille-lab-widgets-pyqt5
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
demille_lab_widgets_pyqt5-0.1.0-py3-none-any.whl -
Subject digest:
af352209361c48167e873917620a4dbd88fa8bbbb6560f426c5961a69953c015 - Sigstore transparency entry: 2797556956
- Sigstore integration time:
-
Permalink:
DeMille-Group-FrAg/demille-lab-widgets-pyqt5@9ee78d52aca438ac6a4a4be56e061427a802ef3a -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/DeMille-Group-FrAg
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9ee78d52aca438ac6a4a4be56e061427a802ef3a -
Trigger Event:
release
-
Statement type: