Skip to content

Commit

Permalink
README.md: add supported Qt bindings
Browse files Browse the repository at this point in the history
  • Loading branch information
PierreRaybaut committed Oct 2, 2024
1 parent 8c09007 commit 534b469
Showing 1 changed file with 24 additions and 36 deletions.
60 changes: 24 additions & 36 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,9 @@

![PythonQwt Test Launcher](https://raw.githubusercontent.com/PlotPyStack/PythonQwt/master/qwt/tests/data/testlauncher.png)

The `PythonQwt` project was initiated to solve -at least temporarily- the
obsolescence issue of `PyQwt` (the Python-Qwt C++ bindings library) which is
no longer maintained. The idea was to translate the original Qwt C++ code to
Python and then to optimize some parts of the code by writing new modules
based on NumPy and other libraries.
The `PythonQwt` project was initiated to solve -at least temporarily- the obsolescence issue of `PyQwt` (the Python-Qwt C++ bindings library) which is no longer maintained. The idea was to translate the original Qwt C++ code to Python and then to optimize some parts of the code by writing new modules based on NumPy and other libraries.

The `PythonQwt` package consists of a single Python package named `qwt` and
of a few other files (examples, doc, ...).
The `PythonQwt` package consists of a single Python package named `qwt` and of a few other files (examples, doc, ...).

See documentation [online](https://pythonqwt.readthedocs.io/en/latest/) or [PDF](https://pythonqwt.readthedocs.io/_/downloads/en/latest/pdf/) for more details on the library and [changelog](CHANGELOG.md) for recent history of changes.

Expand Down Expand Up @@ -71,19 +66,13 @@ PythonQwt-tests --mode unattended

## Overview

The `qwt` package is a pure Python implementation of `Qwt` C++ library with
the following limitations.
The `qwt` package is a pure Python implementation of `Qwt` C++ library with the following limitations.

The following `Qwt` classes won't be reimplemented in `qwt` because more
powerful features already exist in `guiqwt`: `QwtPlotZoomer`,
`QwtCounter`, `QwtEventPattern`, `QwtPicker`, `QwtPlotPicker`.
The following `Qwt` classes won't be reimplemented in `qwt` because more powerful features already exist in `guiqwt`: `QwtPlotZoomer`, `QwtCounter`, `QwtEventPattern`, `QwtPicker`, `QwtPlotPicker`.

Only the following plot items are currently implemented in `qwt` (the only
plot items needed by `guiqwt`): `QwtPlotItem` (base class), `QwtPlotItem`,
`QwtPlotMarker`, `QwtPlotSeriesItem` and `QwtPlotCurve`.
Only the following plot items are currently implemented in `qwt` (the only plot items needed by `guiqwt`): `QwtPlotItem` (base class), `QwtPlotItem`, `QwtPlotMarker`, `QwtPlotSeriesItem` and `QwtPlotCurve`.

See "Overview" section in [documentation](https://pythonqwt.readthedocs.io/en/latest/)
for more details on API limitations when comparing to Qwt.
See "Overview" section in [documentation](https://pythonqwt.readthedocs.io/en/latest/) for more details on API limitations when comparing to Qwt.

## Roadmap

Expand All @@ -94,21 +83,31 @@ The `qwt` package short-term roadmap is the following:
- [X] Replace `setup.py` by `pyproject.toml`, using `setuptools` (e.g. see `guidata`)
- [ ] Add more unit tests: the ultimate goal is to reach 90% code coverage

## Dependencies
## Dependencies and installation

### Supported Qt versions and bindings

The whole PlotPyStack set of libraries relies on the [Qt](https://doc.qt.io/) GUI toolkit, thanks to [QtPy](https://pypi.org/project/QtPy/), an abstraction layer which allows to use the same API to interact with different Python-to-Qt bindings (PyQt5, PyQt6, PySide2, PySide6).

Compatibility table:

| PythonQwt version | PyQt5 | PyQt6 | PySide2 | PySide6 |
|-------------------|-------|-------|---------|---------|
| 0.16 and earlier || ⚠️ || ⚠️ |
| Latest |||||

### Requirements

- Python >=3.8
- PyQt5, PyQt6 or PySide6
- QtPy >= 1.3
- QtPy >= 1.3 (and a Python-to-Qt binding library, see above)
- NumPy >= 1.5

### Optional dependencies

- coverage, pytest (for unit tests)
- sphinx (for documentation generation)

## Installation
### Installation

From the source package:

Expand All @@ -121,27 +120,16 @@ python -m build
### Main code base

- Copyright © 2002 Uwe Rathmann, for the original Qwt C++ code
- Copyright © 2015 Pierre Raybaut, for the Qwt C++ to Python translation and
optimization
- Copyright © 2015 Pierre Raybaut, for the PythonQwt specific and exclusive
Python material

### PyQt, PySide and Python2/Python3 compatibility modules

- Copyright © 2009-2013 Pierre Raybaut
- Copyright © 2013-2015 The Spyder Development Team
- Copyright © 2015 Pierre Raybaut, for the Qwt C++ to Python translation and optimization
- Copyright © 2015 Pierre Raybaut, for the PythonQwt specific and exclusive Python material

### Some examples

- Copyright © 2003-2009 Gerard Vermeulen, for the original PyQwt code
- Copyright © 2015 Pierre Raybaut, for the PyQt5/PySide port and further
developments (e.g. ported to PythonQwt API)
- Copyright © 2015 Pierre Raybaut, for the PyQt5/PySide port and further developments (e.g. ported to PythonQwt API)

## License

The `qwt` Python package was partly (>95%) translated from Qwt C++ library:
the associated code is distributed under the terms of the LGPL license. The
rest of the code was either wrote from scratch or strongly inspired from MIT
licensed third-party software.
The `qwt` Python package was partly (>95%) translated from Qwt C++ library: the associated code is distributed under the terms of the LGPL license. The rest of the code was either wrote from scratch or strongly inspired from MIT licensed third-party software.

See included [LICENSE](LICENSE) file for more details about licensing terms.

0 comments on commit 534b469

Please sign in to comment.