Source code for pyqtgraph.widgets.BusyCursor

from ..Qt import QtGui, QtCore, QT_LIB

__all__ = ['BusyCursor']

[docs]class BusyCursor(object): """Class for displaying a busy mouse cursor during long operations. Usage:: with pyqtgraph.BusyCursor(): doLongOperation() May be nested. If called from a non-gui thread, then the cursor will not be affected. """ active = [] def __enter__(self): app = QtCore.QCoreApplication.instance() isGuiThread = (app is not None) and (QtCore.QThread.currentThread() == app.thread()) if isGuiThread and QtGui.QApplication.instance() is not None: if QT_LIB == 'PySide': # pass CursorShape rather than QCursor for PySide # see https://bugreports.qt.io/browse/PYSIDE-243 QtGui.QApplication.setOverrideCursor(QtCore.Qt.WaitCursor) else: QtGui.QApplication.setOverrideCursor(QtGui.QCursor(QtCore.Qt.WaitCursor)) BusyCursor.active.append(self) self._active = True else: self._active = False def __exit__(self, *args): if self._active: BusyCursor.active.pop(-1) if len(BusyCursor.active) == 0: QtGui.QApplication.restoreOverrideCursor()