Go to file
Adam Strzelecki 983cc1695e
Patch/window handling (#468)
* Do not wrap PlotView/ImageView

There is no need to wrap PlotView/ImageView into QMainWindow, since
only purpose of the QMainWindow is some default menu toolbar & menu
handling, that is not used by PyQtGraph anyway.

Moreover, every parent-less Qt widget can become window, so this
change just use PlotView/ImageView as windows, removing extra
complexity, eg. method forwarding, self.win property.

Another benefit of this change, it that these windows get initial
dimensions and titles as they were designed in .ui file.

* Properly cleanup on ImageView.close()

We should not close explicitly child widgets or clear scene, otherwise
Qt will deallocate children views, and cause "wrapped C/C++ object of
type ImageItem has been deleted" error next time we call close()
and/or some other methods.

All children, including self.ui.roiPlot, self.ui.graphicsView will be
closed together with its parent, so there is no need to close them
explicitly.

So the purpose of close it to reclaim the memory, but not to make the existing ImageView object dysfunctional.

* Remove references to plot & image windows after close

PyQtGraph images and plots module list variables are currently holding
references to all plots and image windows returned directly from main
module. This does not seem to be documented however, and causes the Qt
windows to be not released from memory, even if user releases all own
references.

This change removes the references from images/plots list once window
is closed, so when there is no other reference, window and all related
memory is reclaimed.

* Change all UI forms title from Form to PyQtGraph

Co-authored-by: Ogi Moore <ognyan.moore@gmail.com>
2020-06-01 11:23:18 -07:00
.github/ISSUE_TEMPLATE Add issue template (#976) 2019-07-02 10:26:51 -04:00
doc Get docs version and copyright year dynamically 2020-05-30 09:09:01 -07:00
examples Patch/window handling (#468) 2020-06-01 11:23:18 -07:00
pyqtgraph Patch/window handling (#468) 2020-06-01 11:23:18 -07:00
tools Expand CI + pre-commit (#991) 2019-08-29 13:56:25 -07:00
.coveragerc MNT: hard code the coverage report location 2015-08-01 11:54:15 -04:00
.flake8 Expand CI + pre-commit (#991) 2019-08-29 13:56:25 -07:00
.gitignore TST: Attempt 1 at breaking out ViewBox tests 2015-07-31 11:08:14 -04:00
.pre-commit-config.yaml Expand CI + pre-commit (#991) 2019-08-29 13:56:25 -07:00
.readthedocs.yml Add readthedocs config file as recommended 2020-05-17 16:06:00 -07:00
CHANGELOG Update Changelog with PRs merged since August 2019-12-15 21:54:36 -06:00
CONTRIBUTING.md Update readme and contributing files 2020-02-28 14:48:24 -08:00
LICENSE.txt - Major reorganization; we now follow the standard python package structure. 2012-12-26 17:51:52 -05:00
MANIFEST.in manifest corrections 2014-12-24 11:05:05 -05:00
README.md Updated README with readthedocs link and badge 2020-05-18 14:53:41 -07:00
azure-pipelines.yml Skipping problematic test on py2/qt4/linux 2020-02-24 22:30:27 -08:00
azure-test-template.yml Identify pyqt5 515 ci issue (#1221) 2020-06-01 00:09:16 -07:00
pytest.ini Filter out expected warnings 2020-02-28 14:28:36 -08:00
setup.py remote legacy work-around for old numpy errors (#1046) 2019-09-26 10:08:43 -07:00
test.py We support pyside2 don't we? 2019-05-30 14:40:39 -07:00
tox.ini Remove py2 pip warning message 2020-02-28 14:29:16 -08:00

README.md

Build Status Documentation Status

PyQtGraph

A pure-Python graphics library for PyQt/PySide/PyQt5/PySide2

Copyright 2019 Luke Campagnola, University of North Carolina at Chapel Hill

http://www.pyqtgraph.org

PyQtGraph is intended for use in mathematics / scientific / engineering applications. Despite being written entirely in python, the library is fast due to its heavy leverage of numpy for number crunching, Qt's GraphicsView framework for 2D display, and OpenGL for 3D display.

Requirements

  • PyQt 4.8+, PySide, PyQt5, or PySide2
    • PySide2 5.14 does not have loadUiType functionality, and thus the example application will not work. You can follow along with restoring that functionality here.
  • Python 2.7, or 3.x
  • Required
    • numpy
  • Optional
    • scipy for image processing
    • pyopengl for 3D graphics
      • macOS with Python2 and Qt4 bindings (PyQt4 or PySide) do not work with 3D OpenGL graphics
      • pyqtgraph.opengl will be depreciated in a future version and replaced with VisPy
    • hdf5 for large hdf5 binary format support
  • Known to run on Windows, Linux, and macOS.

Qt Bindings Test Matrix

The following table represents the python environments we test in our CI system. Our CI system uses Ubuntu 18.04, Windows Server 2019, and macOS 10.15 base images.

Qt-Bindings Python 2.7 Python 3.6 Python 3.7 Python 3.8
PyQt-4
PySide1
PyQt-5.9
PySide2-5.13
PyQt-5.14
  • pyqtgraph has had some incompatabilities with PySide2-5.6, and we recommend you avoid those bindings if possible
  • on macOS with Python 2.7 and Qt4 bindings (PyQt4 or PySide) the openGL related visualizations do not work

Support

Installation Methods

  • From PyPI:
    • Last released version: pip install pyqtgraph
    • Latest development version: pip install git+https://github.com/pyqtgraph/pyqtgraph@develop
  • From conda
    • Last released version: conda install pyqtgraph
  • To install system-wide from source distribution: python setup.py install
  • Many linux package repositories have release versions.
  • To use with a specific project, simply copy the pyqtgraph subdirectory anywhere that is importable from your project.
  • For installation packages, see the website (pyqtgraph.org)

Documentation

The easiest way to learn pyqtgraph is to browse through the examples; run python -m pyqtgraph.examples for a menu.

The official documentation lives at https://pyqtgraph.readthedocs.io