Skip to main content

ScientificSpinbox - A Qt widget to manipulate physical quantities

Project description

https://gitlab.com/dpizetta/pqwidget/-/raw/develop/docs/images/scientific-spinbox-cover-resized.png

scientific-spinbox

ScientificSpinbox is a Qt Widget based on QDoubleSpinBox that enables users to insert and manipulate physical quantities naturally.

PyPI - Release Version PyPI - Downloads PyPI - Python Version Documentation Status Test job status CircleCI build status

Getting started

This widget makes it easier for people from STEM (Science, Technology, Engineering, and Mathematics) fields to interact with numeric inputs in a natural way with units and converstion between them, also allowing the usage of scientific notation and adding resources that highly improve the user experience.

The backend that deals with units and their conversion can be set up/integrated separately, but it is currently making use of the package Pint.

This package also makes use of QtPy, an abstraction layer for PyQt/PySide, making it simple to interchange between those bindings and their versions.

Its main application is to be integrated with the PyMR framework to provide a better user interface when setting physical values for Magnetic Resonance experiments, where it is necessary to use, for example, frequency, degrees, voltage, and current.

Despite the specific use, we provided this package as an independent one so more people can benefit from it. The final intention is to integrate this special QSpinBox into the Qt/PySide/PyQt package, if they have interest in the future.

Examples

Below is an example of a ScientificSpinBox widget used to insert values with units of time. The allowed units are s, ms and us and the base unit is ms. The widget enables the user to use scientific notation, edit the values using step up/step down and insert any desired number of decimal places.

Altough the user can play around with the units, the baseValue will always be the input converted to the base unit.

Testing ScientificSpinBox

Example of a ScientificSpinBox with base_unit='ms' and allowed_units=['s','ms','us'].

Installing, updating and uninstalling

To install or update, do:

pip install -U scientific-spinbox

To remove, do:

pip uninstall scientific-spinbox

To install it in development mode, from a local clone, do:

git clone https://gitlab.com/dpizetta/pqwidget.git scientific-spinbox
cd scientific-spinbox && git checkout develop-v1.x
pip install -e .

Testing

To run automated tests for scientific-spinbox, you can use the test environment on tox:

tox -e test

The test environment runs with PyQt5 by default.

There are environments for testing the widget with PyQt5, PyQt6 and PySide6, as well as Python 3.10 and Python 3.11.

tox -e py310-test-pyside6
tox -e py310-test-pyqt5
tox -e py310-test-pyqt6
tox -e py311-test-pyside6
tox -e py311-test-pyqt5
tox -e py311-test-pyqt6

Usage

This widget is intended to be used within your own Qt application. Please read the documentation to see examples of usage and details on how to use it and extend its functionalities.

Compatibility

Currently works with PyQt5, PyQt6 and PySide6. There’s no plans of implementing a compatibility layer with PySide2 for now.

Support

There is no warranty or support at all. Use it at your own risk. If you find an issue, please report it and the maintainers will try or help to fix.

Contributing

Any contribution is welcome and appreciated. Before contributing, please read the “Contributing” section of the documentation.

Authors and acknowledgment

This work was developed by the authors at the Centro de Imagens e Espectroscopia por Ressonância Magnética (CIERMag), at the São Carlos Institute of Physics, University of São Paulo, Brazil.

Maintainer(s)

These people were/are maintainers of this project.

Contributor(s)

These people contributed to bug fixes, improvements, and new features.

License

This project is licensed under GNU Lesser General Public License (LGPLv3).

Project status

This project is still on Beta. It is being actively developed and should reach its first stable release soon.

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

scientific_spinbox-1.0.0.dev8.tar.gz (38.3 kB view details)

Uploaded Source

Built Distribution

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

scientific_spinbox-1.0.0.dev8-py3-none-any.whl (44.5 kB view details)

Uploaded Python 3

File details

Details for the file scientific_spinbox-1.0.0.dev8.tar.gz.

File metadata

  • Download URL: scientific_spinbox-1.0.0.dev8.tar.gz
  • Upload date:
  • Size: 38.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.12

File hashes

Hashes for scientific_spinbox-1.0.0.dev8.tar.gz
Algorithm Hash digest
SHA256 fa13bb2d9436a7fe6bce071d4177c9fd2a6cd43b007c27da79b699bf1e521335
MD5 cf91856a01537a354e1fed65d831fccf
BLAKE2b-256 e59626a6dbf682d2bbf648d6ec9f469341b0f8bffe963e81df7c40d894bd5862

See more details on using hashes here.

File details

Details for the file scientific_spinbox-1.0.0.dev8-py3-none-any.whl.

File metadata

File hashes

Hashes for scientific_spinbox-1.0.0.dev8-py3-none-any.whl
Algorithm Hash digest
SHA256 9e3e9cb19054755f5f2adf4b049aef4b71e6a477dae62d30463ee4bc9282e052
MD5 db73aa2513b5f55dc79939a26de3754d
BLAKE2b-256 ed2ab8a2781cbd20b60aa651d0002f9a14f2bcebf1659657fbc3af5ef540d302

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