PythonQwt 0.10.2__py2.py3-none-any.whl → 0.10.4__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {PythonQwt-0.10.2.dist-info → PythonQwt-0.10.4.dist-info}/METADATA +74 -72
- PythonQwt-0.10.4.dist-info/RECORD +78 -0
- {PythonQwt-0.10.2.dist-info → PythonQwt-0.10.4.dist-info}/WHEEL +1 -1
- PythonQwt-0.10.4.dist-info/entry_points.txt +5 -0
- qwt/__init__.py +3 -2
- qwt/_math.py +0 -2
- qwt/plot.py +7 -18
- qwt/plot_canvas.py +14 -5
- qwt/plot_marker.py +1 -1
- qwt/plot_renderer.py +1 -3
- qwt/qthelpers.py +24 -2
- qwt/scale_engine.py +1 -3
- qwt/symbol.py +4 -4
- qwt/tests/__init__.py +1 -303
- qwt/tests/conftest.py +9 -0
- qwt/tests/data/PythonQwt.svg +484 -0
- qwt/tests/data/bodedemo.png +0 -0
- qwt/tests/data/cartesian.png +0 -0
- qwt/tests/data/cpudemo.png +0 -0
- qwt/tests/data/curvebenchmark1.png +0 -0
- qwt/tests/data/curvebenchmark2.png +0 -0
- qwt/tests/data/curvedemo1.png +0 -0
- qwt/tests/data/curvedemo2.png +0 -0
- qwt/tests/data/data.png +0 -0
- qwt/tests/data/errorbar.png +0 -0
- qwt/tests/data/eventfilter.png +0 -0
- qwt/tests/data/image.png +0 -0
- qwt/tests/data/loadtest.png +0 -0
- qwt/tests/data/logcurve.png +0 -0
- qwt/tests/data/mapdemo.png +0 -0
- qwt/tests/data/multidemo.png +0 -0
- qwt/tests/data/simple.png +0 -0
- qwt/tests/data/stylesheet.png +0 -0
- qwt/tests/data/testlauncher.png +0 -0
- qwt/tests/data/vertical.png +0 -0
- qwt/tests/{bodedemo.py → test_bodedemo.py} +8 -6
- qwt/tests/{cartesian.py → test_cartesian.py} +8 -3
- qwt/tests/{cpudemo.py → test_cpudemo.py} +8 -3
- qwt/tests/{curvebenchmark1.py → test_curvebenchmark1.py} +9 -6
- qwt/tests/{curvebenchmark2.py → test_curvebenchmark2.py} +8 -4
- qwt/tests/{curvedemo1.py → test_curvedemo1.py} +8 -3
- qwt/tests/{curvedemo2.py → test_curvedemo2.py} +8 -3
- qwt/tests/{data.py → test_data.py} +8 -3
- qwt/tests/{errorbar.py → test_errorbar.py} +8 -3
- qwt/tests/{eventfilter.py → test_eventfilter.py} +8 -3
- qwt/tests/{image.py → test_image.py} +8 -3
- qwt/tests/{loadtest.py → test_loadtest.py} +8 -4
- qwt/tests/{logcurve.py → test_logcurve.py} +8 -3
- qwt/tests/{mapdemo.py → test_mapdemo.py} +8 -3
- qwt/tests/{multidemo.py → test_multidemo.py} +8 -3
- qwt/tests/{simple.py → test_simple.py} +8 -3
- qwt/tests/test_stylesheet.py +28 -0
- qwt/tests/{vertical.py → test_vertical.py} +8 -3
- qwt/tests/utils.py +308 -0
- qwt/text.py +1 -19
- PythonQwt-0.10.2.dist-info/RECORD +0 -73
- PythonQwt-0.10.2.dist-info/entry_points.txt +0 -6
- {PythonQwt-0.10.2.dist-info → PythonQwt-0.10.4.dist-info}/LICENSE +0 -0
- {PythonQwt-0.10.2.dist-info → PythonQwt-0.10.4.dist-info}/top_level.txt +0 -0
|
@@ -1,72 +1,74 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: PythonQwt
|
|
3
|
-
Version: 0.10.
|
|
4
|
-
Summary: Qt plotting widgets for Python
|
|
5
|
-
Home-page: https://github.com/
|
|
6
|
-
Author: Pierre Raybaut
|
|
7
|
-
Author-email: pierre.raybaut@gmail.com
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
Classifier:
|
|
11
|
-
Classifier: License :: OSI Approved ::
|
|
12
|
-
Classifier:
|
|
13
|
-
Classifier: Topic ::
|
|
14
|
-
Classifier:
|
|
15
|
-
Classifier: Operating System ::
|
|
16
|
-
Classifier: Operating System ::
|
|
17
|
-
Classifier: Operating System ::
|
|
18
|
-
Classifier: Operating System ::
|
|
19
|
-
Classifier:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
Requires-Dist:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
The ``PythonQwt``
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
The
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
plot.
|
|
62
|
-
plot.
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
..
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: PythonQwt
|
|
3
|
+
Version: 0.10.4
|
|
4
|
+
Summary: Qt plotting widgets for Python
|
|
5
|
+
Home-page: https://github.com/PlotPyStack/PythonQwt
|
|
6
|
+
Author: Pierre Raybaut
|
|
7
|
+
Author-email: pierre.raybaut@gmail.com
|
|
8
|
+
Platform: Any
|
|
9
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
10
|
+
Classifier: License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)
|
|
11
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
12
|
+
Classifier: Topic :: Scientific/Engineering :: Visualization
|
|
13
|
+
Classifier: Topic :: Software Development :: Widget Sets
|
|
14
|
+
Classifier: Operating System :: MacOS
|
|
15
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Operating System :: POSIX
|
|
18
|
+
Classifier: Operating System :: Unix
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
License-File: LICENSE
|
|
21
|
+
Requires-Dist: NumPy (>=1.5)
|
|
22
|
+
Requires-Dist: QtPy (>=1.3)
|
|
23
|
+
Provides-Extra: doc
|
|
24
|
+
Requires-Dist: Sphinx (>=1.1) ; extra == 'doc'
|
|
25
|
+
Provides-Extra: test
|
|
26
|
+
Requires-Dist: coverage ; extra == 'test'
|
|
27
|
+
Requires-Dist: pytest ; extra == 'test'
|
|
28
|
+
Requires-Dist: pytest-qt ; extra == 'test'
|
|
29
|
+
Requires-Dist: pytest-cov ; extra == 'test'
|
|
30
|
+
|
|
31
|
+
PythonQwt: Qt plotting widgets for Python
|
|
32
|
+
=========================================
|
|
33
|
+
|
|
34
|
+
.. image:: https://raw.githubusercontent.com/PierreRaybaut/PythonQwt/master/qwt/tests/data/testlauncher.png
|
|
35
|
+
|
|
36
|
+
The ``PythonQwt`` package is a 2D-data plotting library using Qt graphical
|
|
37
|
+
user interfaces for the Python programming language. It is compatible with
|
|
38
|
+
``PyQt4``, ``PyQt5``, ``PyQt6`` and ``PySide6``.
|
|
39
|
+
|
|
40
|
+
The ``PythonQwt`` project was initiated to solve -at least temporarily- the
|
|
41
|
+
obsolescence issue of `PyQwt` (the Python-Qwt C++ bindings library) which is
|
|
42
|
+
no longer maintained. The idea was to translate the original Qwt C++ code to
|
|
43
|
+
Python and then to optimize some parts of the code by writing new modules
|
|
44
|
+
based on NumPy and other libraries.
|
|
45
|
+
|
|
46
|
+
The ``PythonQwt`` package consists of a single Python package named `qwt`
|
|
47
|
+
which is a pure Python implementation of Qwt C++ library with some
|
|
48
|
+
limitations: efforts were concentrated on basic plotting features, leaving
|
|
49
|
+
higher level features to the `guiqwt` library.
|
|
50
|
+
|
|
51
|
+
See `README`_ and documentation (`online`_ or `PDF`_) for more details on the library and `changelog`_ for recent history of changes.
|
|
52
|
+
|
|
53
|
+
The following example is a good starting point to see how to set up a simple plot widget::
|
|
54
|
+
|
|
55
|
+
from qtpy import QtWidgets as QW
|
|
56
|
+
import qwt
|
|
57
|
+
import numpy as np
|
|
58
|
+
|
|
59
|
+
app = QW.QApplication([])
|
|
60
|
+
x = np.linspace(-10, 10, 500)
|
|
61
|
+
plot = qwt.QwtPlot("Trigonometric functions")
|
|
62
|
+
plot.insertLegend(qwt.QwtLegend(), qwt.QwtPlot.BottomLegend)
|
|
63
|
+
qwt.QwtPlotCurve.make(x, np.cos(x), "Cosinus", plot, linecolor="red", antialiased=True)
|
|
64
|
+
qwt.QwtPlotCurve.make(x, np.sin(x), "Sinus", plot, linecolor="blue", antialiased=True)
|
|
65
|
+
plot.resize(600, 300)
|
|
66
|
+
plot.show()
|
|
67
|
+
app.exec_()
|
|
68
|
+
|
|
69
|
+
.. image:: https://raw.githubusercontent.com/PierreRaybaut/PythonQwt/master/doc/_static/QwtPlot_example.png
|
|
70
|
+
|
|
71
|
+
.. _README: https://github.com/PlotPyStack/PythonQwt/blob/master/README.md
|
|
72
|
+
.. _online: https://pythonqwt.readthedocs.io/en/latest/
|
|
73
|
+
.. _PDF: https://pythonqwt.readthedocs.io/_/downloads/en/latest/pdf/
|
|
74
|
+
.. _changelog: https://github.com/PlotPyStack/PythonQwt/blob/master/CHANGELOG.md
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
qwt/__init__.py,sha256=KtaS7yoAuV0dieZcZhp7CxEUCiTsTUoJpFP1-t4I474,5800
|
|
2
|
+
qwt/_math.py,sha256=Xut9qwwwnzykC5YV2H3h9F4W9z8jv61ckPtMt941hVQ,1584
|
|
3
|
+
qwt/color_map.py,sha256=LkeEyZcZ60rfceZ-G6YwuY6ljjBoDfYr9NDJtX_hqGE,11824
|
|
4
|
+
qwt/column_symbol.py,sha256=gY57VFgmLo0JwT-7AK7ITli61WzUAdQptQTcYHQbUdo,5720
|
|
5
|
+
qwt/dyngrid_layout.py,sha256=QHbyVX1Y4YAuTaPhlxL2AXluLD8-L521N-Y22bzfY-M,13367
|
|
6
|
+
qwt/graphic.py,sha256=hPnjRF08foEsUW1i1UVe-t_jDIqjWWL7No5_c_ebH3M,28446
|
|
7
|
+
qwt/interval.py,sha256=PMrCQxV9NXGk2JG0MNjJ3zGTNTSSRfa_noxbpm-Okns,12287
|
|
8
|
+
qwt/legend.py,sha256=N455HProPp7mbFrBls5bqCP0q2qblSg4NxM6hU5E6i4,31082
|
|
9
|
+
qwt/null_paintdevice.py,sha256=09zYxGLCkdlRhP4hbNIUz4RzEr1Rteso2Ex55PqOEWA,9136
|
|
10
|
+
qwt/painter.py,sha256=E3QeJwrn7cS5aCS5mV9QrkwHqv5U_ZYZcnrhur4I-0k,19343
|
|
11
|
+
qwt/painter_command.py,sha256=WMHeAWn5ngsmX8hoIVgICTaD1YPYWzGnfUvy0OVO9wA,6955
|
|
12
|
+
qwt/plot.py,sha256=y-rF3x_ulwAvI6k1amJ0-2tpvOMlCt8_AfHFVFp803g,76213
|
|
13
|
+
qwt/plot_canvas.py,sha256=eXFnJ26e_Bbo6jf1qwRRShRqUo16rDgOmGDcIBErvhM,30850
|
|
14
|
+
qwt/plot_curve.py,sha256=6B3MAPN9-aethy8eqZo4ADtlSBrQO9ggY1z0JkvoKxQ,37270
|
|
15
|
+
qwt/plot_directpainter.py,sha256=TrgiFLdHu2DH-V_aOfH4DQawTaZUaS3EZxTQ-eWRyJc,10537
|
|
16
|
+
qwt/plot_grid.py,sha256=w4bJhR5VDvoXF0dwjcejYIF6t5nZz7vG1Jdq5g3h_1c,16563
|
|
17
|
+
qwt/plot_layout.py,sha256=FhQVYDtvsuvJJqhUAcBbGUt4uUBQZ_N7UrZEvJUrzjk,45829
|
|
18
|
+
qwt/plot_marker.py,sha256=ADrdoYaaRqTiyHt3ypAX_9CQvRPyE6GV3Vrm-6K2m88,21272
|
|
19
|
+
qwt/plot_renderer.py,sha256=Tf5aHc3mCs7YlClBEsyXozoMAMenxtt24MHJ7gOUklQ,26663
|
|
20
|
+
qwt/plot_series.py,sha256=H-fUfw-0Edfrn8PIpaRQ1T1yqrHMuMDcNJffrM61aHE,11043
|
|
21
|
+
qwt/qthelpers.py,sha256=koM5xFt2WQCG4JZyu96AdSB4END_CoFn4ivd1rVXcnU,1585
|
|
22
|
+
qwt/scale_div.py,sha256=pZmsg-PIof3yAeLTfiFMC3tMvNSSMHomkYWnAe3eEjw,9276
|
|
23
|
+
qwt/scale_draw.py,sha256=V2sYXOdMN7PF-6oYpJs6XDt8fgXsApj3YUswE-cjGfA,37720
|
|
24
|
+
qwt/scale_engine.py,sha256=2eA491abgPpcIBarszCFSk3IQTy8vGvATDzjzRm6ewo,29070
|
|
25
|
+
qwt/scale_map.py,sha256=pw3FHwrxilof9kdkPSHmrbp_HA96eRWF7apZlPwSPvM,9576
|
|
26
|
+
qwt/scale_widget.py,sha256=XPD0hvB91pQGkRH9czd-YFhuZiNAC7Q1MdhSmjdx-U4,26978
|
|
27
|
+
qwt/symbol.py,sha256=Op-8_A7FpwIncsORTsbmV8abLhovzYN9AV9dIIeCiN4,41434
|
|
28
|
+
qwt/text.py,sha256=MenZcme72HH_7O5fsYqdlFJGyNmUGDBXhugGtgH2_EA,41977
|
|
29
|
+
qwt/toqimage.py,sha256=XBd1qYgv_FqqmP7BNIWP_5pGDqIwQLUa7Giuj1voEmg,1725
|
|
30
|
+
qwt/transform.py,sha256=XgKuvG5odsjBObwDaPYOnM1QVidFFIPaKDPiCl_fg1E,6001
|
|
31
|
+
qwt/tests/__init__.py,sha256=hdqKy7NmYU1UX6Nv0-WNLeq84BjglHtAWdtnd2K5U28,1117
|
|
32
|
+
qwt/tests/comparative_benchmarks.py,sha256=unAmhNvIo-BexOX0UfsJo7v5_SrBXlEyCJ6SRfgZP6E,1883
|
|
33
|
+
qwt/tests/conftest.py,sha256=JHMXAgmHphJ8hWXjqVBBLxe0XlRb3rKOu9GRKVbcr_A,272
|
|
34
|
+
qwt/tests/test_bodedemo.py,sha256=s_rd0OTTQGWhXyQjmNZXaDgxB1xfPxOsClVt04JmTmg,9304
|
|
35
|
+
qwt/tests/test_cartesian.py,sha256=8rA4CgZ8M73-AmOgLDERuW9-3rjD8jVumcV96LPhSbM,3966
|
|
36
|
+
qwt/tests/test_cpudemo.py,sha256=uT6KRnDupH3LAC9U0CM6yUf346VH_CGX6xPpLpjwogo,13196
|
|
37
|
+
qwt/tests/test_curvebenchmark1.py,sha256=8dmfLznqbSvTP0eNKpBwgwMdyjEgt6fHErDO3UcYXkc,6075
|
|
38
|
+
qwt/tests/test_curvebenchmark2.py,sha256=NrrJTuCGXgtfiUxciT0j3ZbsNVT_kmoqgs0BYTTssmQ,2888
|
|
39
|
+
qwt/tests/test_curvedemo1.py,sha256=P_Dz4ZaH_Nw7cO2EHKz2NKiuGuBGfBtCr22W8N82uc8,4311
|
|
40
|
+
qwt/tests/test_curvedemo2.py,sha256=xh25WN3Wayh8QF2Rh4GCSVI6M3Q50QqymgkEB5XdF78,4233
|
|
41
|
+
qwt/tests/test_data.py,sha256=Qj_sNJHd0o3UF6CI_d-jo5KWLt2bEJzpwF7SRyPm98M,3255
|
|
42
|
+
qwt/tests/test_errorbar.py,sha256=WRGm3YqyuC0P8OlC77Zpk1-v6HlgTkNTAyfQREJYrd8,11021
|
|
43
|
+
qwt/tests/test_eventfilter.py,sha256=hzjZhms1pDg_7RTMXj9O7uYW9Qy1ec_9qVRyX0fi83Q,16927
|
|
44
|
+
qwt/tests/test_image.py,sha256=1lgyBRmy98RYCFh4IR4Z2Wxe0f5l6H-UiKtI2hO2Amo,6755
|
|
45
|
+
qwt/tests/test_loadtest.py,sha256=4Ge0-S70v_0eBX4CJYky3-IPjm97Tm4iLZUAoUuc8D8,1845
|
|
46
|
+
qwt/tests/test_logcurve.py,sha256=oPmaqSWmAvO38aXUAuvWI7SeWqAGNdXYE2l7mJ6iPvQ,1169
|
|
47
|
+
qwt/tests/test_mapdemo.py,sha256=Dilldf16_PToTUgsvLV2oBetCPsriGoSNQa8ceueIPk,3529
|
|
48
|
+
qwt/tests/test_multidemo.py,sha256=FqPB8GKALwon42_EifyB5Fa7nQkawKkGh0Jb2Tkrx7Q,2611
|
|
49
|
+
qwt/tests/test_simple.py,sha256=jHIGqQltIs2EZj8bAooJ-VrHf9EHyMwpo6cHVSo2CwM,1934
|
|
50
|
+
qwt/tests/test_stylesheet.py,sha256=xpb5S3PLjOTFy1xq94RYIpUqWvfoIr5Qt1o5oEcmiMA,764
|
|
51
|
+
qwt/tests/test_vertical.py,sha256=15ohX935KDB1Ze7QpDiJcusnMVc1wOiLMKBEA7Dd3s8,4183
|
|
52
|
+
qwt/tests/utils.py,sha256=p09KDxZC4zM6iTPLf2ifpzY9kgp_neVy1l_UgqFgbJo,10496
|
|
53
|
+
qwt/tests/data/PythonQwt.svg,sha256=t-NYdVPqz7BcqtXNWCJvo8udrRmtGh57ksSYWUl1h4o,15232
|
|
54
|
+
qwt/tests/data/bodedemo.png,sha256=8jP1YLE6HdwjEmrQyJclLxiYI4Zs4t0z0BoN1JT3GPQ,24414
|
|
55
|
+
qwt/tests/data/cartesian.png,sha256=Cwbn5Jy3VT-OisFHxzMCVbfdbJacUMZ9uGCD9sCxA-Q,51094
|
|
56
|
+
qwt/tests/data/cpudemo.png,sha256=1sy4hkiT3J7rs0FHQoFNnHtqEzFsP888Cfq27GY-pJI,30241
|
|
57
|
+
qwt/tests/data/curvebenchmark1.png,sha256=a6skUJGNEFhL0kbJAM2Mhs6NpTKav1gJbcsRx4NSfbQ,40992
|
|
58
|
+
qwt/tests/data/curvebenchmark2.png,sha256=L9vgabmzewWLCtlsHg1zzoEylHxpJ6bbz3yj2_4nTuI,126537
|
|
59
|
+
qwt/tests/data/curvedemo1.png,sha256=PPYNtnxWdoqsxK3QXo615H-aRTYb71zLyuMEAsZhooc,13908
|
|
60
|
+
qwt/tests/data/curvedemo2.png,sha256=1rnIMEEJCFjYic1wNGP1oyATUt_8VirB7O4PyHPeUfw,8909
|
|
61
|
+
qwt/tests/data/data.png,sha256=NNPnE0PZfRC7dNse1Ia4P3n1rM_ADRfCvXA4I10nLOk,15940
|
|
62
|
+
qwt/tests/data/errorbar.png,sha256=zqD2aPwPqTm18VuoLAUQPUnSgJfr-NTviPJXm4oLwco,13696
|
|
63
|
+
qwt/tests/data/eventfilter.png,sha256=CUgvSZcoADX_DwW5Lmq_iSMNc7L4Jfk16tXsNexG3ew,9199
|
|
64
|
+
qwt/tests/data/image.png,sha256=Pdz4mMGzzAOTbdKQBwnBscc4JwJxr3dWlUX4yOUCGjg,57728
|
|
65
|
+
qwt/tests/data/loadtest.png,sha256=PmeAPBsKx38rKeHjuyF4CDM7pg4CcI4F_juKv_BBFL8,128560
|
|
66
|
+
qwt/tests/data/logcurve.png,sha256=aH9grJlKXUjOjgGO0PVrzTpvXA9Kb6DtU-EL_O8ia_U,16633
|
|
67
|
+
qwt/tests/data/mapdemo.png,sha256=S2xvGNvoTgukvrqWTOIpPQQVtAsWeyFbUkoG4-Wq_TU,19713
|
|
68
|
+
qwt/tests/data/multidemo.png,sha256=1nthNyuxz6H_SIKjLdoyS-X-mxOWlW_nxRzRe2V2M5A,8805
|
|
69
|
+
qwt/tests/data/simple.png,sha256=78MdmZfA4F4tyjnvEw0jWD5wh5OEK1LjUb_Mxo7QHok,15709
|
|
70
|
+
qwt/tests/data/stylesheet.png,sha256=ZjWURAS_eYB5cyLmkQrUg7bTSv-V3uIm6q8FGQjGnFc,13160
|
|
71
|
+
qwt/tests/data/testlauncher.png,sha256=lb6rUnlpY1Q-rezdG6gAtWMWwY5PX58Zuq6338bI8kY,110858
|
|
72
|
+
qwt/tests/data/vertical.png,sha256=EvyG6q6rZm6pTT08Y_nzdBYCnqmoX1QDuEQtp2pyGlw,34076
|
|
73
|
+
PythonQwt-0.10.4.dist-info/LICENSE,sha256=qjEk8TRuXmFS7QC-omINvD1UPGqWaOs6CzcCZoMEhdI,33457
|
|
74
|
+
PythonQwt-0.10.4.dist-info/METADATA,sha256=UF-RXk3Z0zncgGNjCOtluEU6ZXXeKen7oHyNAYGJfnI,3317
|
|
75
|
+
PythonQwt-0.10.4.dist-info/WHEEL,sha256=a-zpFRIJzOq5QfuhBzbhiA1eHTzNCJn8OdRvhdNX0Rk,110
|
|
76
|
+
PythonQwt-0.10.4.dist-info/entry_points.txt,sha256=wSH-OHXrA7c0ymhYRcBFLhBsMqOiw9gofXVe_5UIBYA,107
|
|
77
|
+
PythonQwt-0.10.4.dist-info/top_level.txt,sha256=KB1IBdWRWnaItyJMaECwZiEi1jWt3IvqCrRVVhMjTu8,4
|
|
78
|
+
PythonQwt-0.10.4.dist-info/RECORD,,
|
qwt/__init__.py
CHANGED
|
@@ -24,9 +24,10 @@ External resources:
|
|
|
24
24
|
|
|
25
25
|
.. _PyPI: https://pypi.python.org/pypi/PythonQwt
|
|
26
26
|
.. _GitHubPage: http://pierreraybaut.github.io/PythonQwt
|
|
27
|
-
.. _GitHub: https://github.com/
|
|
27
|
+
.. _GitHub: https://github.com/PlotPyStack/PythonQwt
|
|
28
28
|
"""
|
|
29
|
-
|
|
29
|
+
|
|
30
|
+
__version__ = "0.10.4"
|
|
30
31
|
QWT_VERSION_STR = "6.1.5"
|
|
31
32
|
|
|
32
33
|
import warnings
|
qwt/_math.py
CHANGED
qwt/plot.py
CHANGED
|
@@ -217,7 +217,7 @@ class AxisData(object):
|
|
|
217
217
|
self.scaleWidget = None # QwtScaleWidget
|
|
218
218
|
|
|
219
219
|
|
|
220
|
-
class QwtPlot(
|
|
220
|
+
class QwtPlot(QwtPlotDict, QFrame):
|
|
221
221
|
"""
|
|
222
222
|
A 2-D plotting widget
|
|
223
223
|
|
|
@@ -249,7 +249,7 @@ class QwtPlot(QFrame, QwtPlotDict):
|
|
|
249
249
|
plot.resize(600, 300)
|
|
250
250
|
plot.show()
|
|
251
251
|
|
|
252
|
-
.. image:: /
|
|
252
|
+
.. image:: /_static/QwtPlot_example.png
|
|
253
253
|
|
|
254
254
|
.. py:class:: QwtPlot([title=""], [parent=None])
|
|
255
255
|
|
|
@@ -361,17 +361,6 @@ class QwtPlot(QFrame, QwtPlotDict):
|
|
|
361
361
|
|
|
362
362
|
qwtEnableLegendItems(self, True)
|
|
363
363
|
|
|
364
|
-
def __del__(self):
|
|
365
|
-
self.setAutoReplot(False)
|
|
366
|
-
# XXX Is is really necessary in Python? (pure transcription of C++)
|
|
367
|
-
# The following line have been commented to avoid crashing Python
|
|
368
|
-
# when exiting interpreter (Python 3 only)
|
|
369
|
-
|
|
370
|
-
# self.detachItems(QwtPlotItem.Rtti_PlotItem, self.autoDelete())
|
|
371
|
-
# self.__data.layout = None
|
|
372
|
-
# self.deleteAxesData()
|
|
373
|
-
# self.__data = None
|
|
374
|
-
|
|
375
364
|
def setFlatStyle(self, state):
|
|
376
365
|
"""
|
|
377
366
|
Set or reset the flatStyle option
|
|
@@ -585,7 +574,7 @@ class QwtPlot(QFrame, QwtPlotDict):
|
|
|
585
574
|
:py:meth:`qwt.scale_engine.QwtScaleEngine.divideScale()`
|
|
586
575
|
"""
|
|
587
576
|
if self.axisValid(axisId):
|
|
588
|
-
return self.
|
|
577
|
+
return self.__axisData[axisId].maxMajor
|
|
589
578
|
else:
|
|
590
579
|
return 0
|
|
591
580
|
|
|
@@ -600,7 +589,7 @@ class QwtPlot(QFrame, QwtPlotDict):
|
|
|
600
589
|
:py:meth:`qwt.scale_engine.QwtScaleEngine.divideScale()`
|
|
601
590
|
"""
|
|
602
591
|
if self.axisValid(axisId):
|
|
603
|
-
return self.
|
|
592
|
+
return self.__axisData[axisId].maxMinor
|
|
604
593
|
else:
|
|
605
594
|
return 0
|
|
606
595
|
|
|
@@ -641,7 +630,7 @@ class QwtPlot(QFrame, QwtPlotDict):
|
|
|
641
630
|
:py:meth:`qwt.scale_engine.QwtScaleEngine.divideScale()`
|
|
642
631
|
"""
|
|
643
632
|
if self.axisValid(axisId):
|
|
644
|
-
return self.
|
|
633
|
+
return self.__axisData[axisId].stepSize
|
|
645
634
|
else:
|
|
646
635
|
return 0
|
|
647
636
|
|
|
@@ -991,8 +980,8 @@ class QwtPlot(QFrame, QwtPlotDict):
|
|
|
991
980
|
# Otherwise, when tick labels are large enough, the ticks
|
|
992
981
|
# may not be aligned with canvas grid.
|
|
993
982
|
# See the following issues for more details:
|
|
994
|
-
# https://github.com/
|
|
995
|
-
# https://github.com/
|
|
983
|
+
# https://github.com/PlotPyStack/guiqwt/issues/57
|
|
984
|
+
# https://github.com/PlotPyStack/PythonQwt/issues/30
|
|
996
985
|
startDist, endDist = scaleWidget.getBorderDistHint()
|
|
997
986
|
scaleWidget.setBorderDist(startDist, endDist)
|
|
998
987
|
|
qwt/plot_canvas.py
CHANGED
|
@@ -32,7 +32,7 @@ from qtpy.QtGui import (
|
|
|
32
32
|
QPolygonF,
|
|
33
33
|
)
|
|
34
34
|
from qtpy.QtWidgets import QFrame, QStyleOption, QStyle
|
|
35
|
-
from qtpy.QtCore import Qt, QSizeF, QEvent, QPointF, QRectF
|
|
35
|
+
from qtpy.QtCore import Qt, QSizeF, QEvent, QPointF, QRectF, QRect
|
|
36
36
|
from qtpy import QtCore as QC
|
|
37
37
|
|
|
38
38
|
|
|
@@ -81,8 +81,17 @@ class QwtStyleSheetRecorder(QwtNullPaintDevice):
|
|
|
81
81
|
self.__origin = state.brushOrigin()
|
|
82
82
|
|
|
83
83
|
def drawRects(self, rects, count):
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
if QT_API.startswith("pyside"):
|
|
85
|
+
# Pyside
|
|
86
|
+
if isinstance(rects, (QRect, QRectF)):
|
|
87
|
+
self.border.list = [rects]
|
|
88
|
+
else:
|
|
89
|
+
for i in range(count):
|
|
90
|
+
self.border.rectList += [rects.getRect().index(i)]
|
|
91
|
+
else:
|
|
92
|
+
# PyQt
|
|
93
|
+
for i in range(count):
|
|
94
|
+
self.border.rectList += [rects[i]]
|
|
86
95
|
|
|
87
96
|
def drawPath(self, path):
|
|
88
97
|
rect = QRectF(QPointF(0.0, 0.0), self.__size)
|
|
@@ -756,9 +765,9 @@ class QwtPlotCanvas(QFrame):
|
|
|
756
765
|
opt.midLineWidth = self.midLineWidth()
|
|
757
766
|
else:
|
|
758
767
|
opt.lineWidth = self.frameWidth()
|
|
759
|
-
if frameShadow ==
|
|
768
|
+
if frameShadow == QFrame.Sunken:
|
|
760
769
|
opt.state |= QStyle.State_Sunken
|
|
761
|
-
elif frameShadow ==
|
|
770
|
+
elif frameShadow == QFrame.Raised:
|
|
762
771
|
opt.state |= QStyle.State_Raised
|
|
763
772
|
self.style().drawControl(QStyle.CE_ShapedFrame, opt, painter, self)
|
|
764
773
|
|
qwt/plot_marker.py
CHANGED
|
@@ -316,7 +316,7 @@ class QwtPlotMarker(QwtPlotItem):
|
|
|
316
316
|
alignPos.setX(canvasRect.center().x())
|
|
317
317
|
else:
|
|
318
318
|
if self.__data.symbol and self.__data.symbol.style() != QwtSymbol.NoSymbol:
|
|
319
|
-
symbolOff = self.__data.symbol.size() + QSizeF(1, 1)
|
|
319
|
+
symbolOff = QSizeF(self.__data.symbol.size()) + QSizeF(1, 1)
|
|
320
320
|
symbolOff /= 2
|
|
321
321
|
pw2 = self.__data.pen.widthF() / 2.0
|
|
322
322
|
if pw2 == 0.0:
|
qwt/plot_renderer.py
CHANGED
|
@@ -13,8 +13,6 @@ QwtPlotRenderer
|
|
|
13
13
|
:members:
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
|
-
from __future__ import division
|
|
17
|
-
|
|
18
16
|
from qwt.painter import QwtPainter
|
|
19
17
|
from qwt.plot import QwtPlot
|
|
20
18
|
from qwt.plot_layout import QwtPlotLayout
|
|
@@ -358,7 +356,7 @@ class QwtPlotRenderer(QObject):
|
|
|
358
356
|
invtrans, _ok = transform.inverted()
|
|
359
357
|
layoutRect = invtrans.mapRect(plotRect)
|
|
360
358
|
if not (self.__data.discardFlags & self.DiscardBackground):
|
|
361
|
-
left, top, right, bottom = plot.
|
|
359
|
+
left, top, right, bottom = plot.getContentsMargins()
|
|
362
360
|
layoutRect.adjust(left, top, -right, -bottom)
|
|
363
361
|
|
|
364
362
|
layout = plot.plotLayout()
|
qwt/qthelpers.py
CHANGED
|
@@ -6,8 +6,15 @@
|
|
|
6
6
|
|
|
7
7
|
"""Qt helpers"""
|
|
8
8
|
|
|
9
|
+
import os.path as osp
|
|
10
|
+
import os
|
|
11
|
+
|
|
9
12
|
from qtpy import QtGui as QG
|
|
10
|
-
from qtpy
|
|
13
|
+
from qtpy import QtWidgets as QW
|
|
14
|
+
from qtpy import QtCore as QC
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
QT_API = os.environ["QT_API"]
|
|
11
18
|
|
|
12
19
|
|
|
13
20
|
def qcolor_from_str(color, default):
|
|
@@ -25,7 +32,7 @@ def qcolor_from_str(color, default):
|
|
|
25
32
|
return default
|
|
26
33
|
elif isinstance(color, str):
|
|
27
34
|
try:
|
|
28
|
-
return getattr(Qt, color)
|
|
35
|
+
return getattr(QC.Qt, color)
|
|
29
36
|
except AttributeError:
|
|
30
37
|
raise ValueError("Unknown Qt color %r" % color)
|
|
31
38
|
else:
|
|
@@ -33,3 +40,18 @@ def qcolor_from_str(color, default):
|
|
|
33
40
|
return QG.QColor(color)
|
|
34
41
|
except TypeError:
|
|
35
42
|
raise TypeError("Invalid color %r" % color)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def take_screenshot(widget, path, size=None, quit=True):
|
|
46
|
+
"""Take screenshot of widget"""
|
|
47
|
+
if size is not None:
|
|
48
|
+
widget.resize(*size)
|
|
49
|
+
widget.show()
|
|
50
|
+
QW.QApplication.processEvents()
|
|
51
|
+
if QT_API in ("pyqt4", "pyside2"):
|
|
52
|
+
pixmap = QG.QPixmap.grabWidget(widget)
|
|
53
|
+
else:
|
|
54
|
+
pixmap = widget.grab()
|
|
55
|
+
pixmap.save(path)
|
|
56
|
+
if quit:
|
|
57
|
+
QC.QTimer.singleShot(0, QW.QApplication.instance().quit)
|
qwt/scale_engine.py
CHANGED
|
@@ -25,8 +25,6 @@ QwtLogScaleEngine
|
|
|
25
25
|
:members:
|
|
26
26
|
"""
|
|
27
27
|
|
|
28
|
-
from __future__ import division
|
|
29
|
-
|
|
30
28
|
from qwt.interval import QwtInterval
|
|
31
29
|
from qwt.scale_div import QwtScaleDiv
|
|
32
30
|
from qwt.transform import QwtLogTransform
|
|
@@ -466,7 +464,7 @@ class QwtScaleEngine(object):
|
|
|
466
464
|
|
|
467
465
|
|
|
468
466
|
class QwtLinearScaleEngine(QwtScaleEngine):
|
|
469
|
-
"""
|
|
467
|
+
r"""
|
|
470
468
|
A scale engine for linear scales
|
|
471
469
|
|
|
472
470
|
The step size will fit into the pattern
|
qwt/symbol.py
CHANGED
|
@@ -693,7 +693,7 @@ class QwtSymbol(object):
|
|
|
693
693
|
|
|
694
694
|
app.exec_()
|
|
695
695
|
|
|
696
|
-
.. image:: /
|
|
696
|
+
.. image:: /_static/symbol_path_example.png
|
|
697
697
|
|
|
698
698
|
:param QPainterPath path: Painter path
|
|
699
699
|
|
|
@@ -1208,9 +1208,9 @@ class QwtSymbol(object):
|
|
|
1208
1208
|
pinPointTranslation = True
|
|
1209
1209
|
elif self.__data.style == QwtSymbol.Pixmap:
|
|
1210
1210
|
if self.__data.size.isEmpty():
|
|
1211
|
-
rect.setSize(self.__data.pixmap.pixmap.size())
|
|
1211
|
+
rect.setSize(QSizeF(self.__data.pixmap.pixmap.size()))
|
|
1212
1212
|
else:
|
|
1213
|
-
rect.setSize(self.__data.size)
|
|
1213
|
+
rect.setSize(QSizeF(self.__data.size))
|
|
1214
1214
|
pinPointTranslation = True
|
|
1215
1215
|
elif self.__data.style == QwtSymbol.Graphic:
|
|
1216
1216
|
rect = qwtScaleBoundingRect(self.__data.graphic.graphic, self.__data.size)
|
|
@@ -1227,7 +1227,7 @@ class QwtSymbol(object):
|
|
|
1227
1227
|
rect = transform.mapRect(rect)
|
|
1228
1228
|
pinPointTranslation = True
|
|
1229
1229
|
else:
|
|
1230
|
-
rect.setSize(self.__data.size)
|
|
1230
|
+
rect.setSize(QSizeF(self.__data.size))
|
|
1231
1231
|
rect.moveCenter(QPointF(0.0, 0.0))
|
|
1232
1232
|
if pinPointTranslation:
|
|
1233
1233
|
pinPoint = QPointF(0.0, 0.0)
|