From 85e894dd73d21b479bcc0d98431e17ed88d583d3 Mon Sep 17 00:00:00 2001 From: KIU Shueng Chuan Date: Mon, 1 Mar 2021 13:45:00 +0800 Subject: [PATCH] convert uses of QTimer.singleShot to QTimer instances On macOS and Linux with PyQt bindings, QTimer.singleShot continues to fire on python interpreter shutdown. --- examples/ImageItem.py | 8 ++++++-- examples/PColorMeshItem.py | 7 ++++++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/examples/ImageItem.py b/examples/ImageItem.py index 9982d65c..49141084 100644 --- a/examples/ImageItem.py +++ b/examples/ImageItem.py @@ -36,6 +36,10 @@ i = 0 updateTime = ptime.time() fps = 0 +timer = QtCore.QTimer() +timer.setSingleShot(True) +# not using QTimer.singleShot() because of persistence on PyQt. see PR #1605 + def updateData(): global img, data, i, updateTime, fps @@ -43,7 +47,7 @@ def updateData(): img.setImage(data[i]) i = (i+1) % data.shape[0] - QtCore.QTimer.singleShot(1, updateData) + timer.start(1) now = ptime.time() fps2 = 1.0 / (now-updateTime) updateTime = now @@ -51,7 +55,7 @@ def updateData(): #print "%0.1f fps" % fps - +timer.timeout.connect(updateData) updateData() ## Start Qt event loop unless running in interactive mode. diff --git a/examples/PColorMeshItem.py b/examples/PColorMeshItem.py index 1e5f4e85..44604c8e 100644 --- a/examples/PColorMeshItem.py +++ b/examples/PColorMeshItem.py @@ -61,6 +61,10 @@ wave_speed = 0.3 wave_length = 10 color_speed = 0.3 +timer = QtCore.QTimer() +timer.setSingleShot(True) +# not using QTimer.singleShot() because of persistence on PyQt. see PR #1605 + i=0 def updateData(): global i @@ -74,8 +78,9 @@ def updateData(): new_z) i += wave_speed - QtCore.QTimer.singleShot(1000//fps, updateData) + timer.start(1000//fps) +timer.timeout.connect(updateData) updateData() ## Start Qt event loop unless running in interactive mode.