Skip to content

Commit c2c9150

Browse files
committed
add pause example
1 parent 4d72316 commit c2c9150

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

examples/gui_qt_embed.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import time
1111
import importlib
1212

13-
from triangle import setup_drawing_sync
13+
from cube import setup_drawing_sync
1414

1515
# For the sake of making this example Just Work, we try multiple QT libs
1616
for lib in ("PySide6", "PyQt6", "PySide2", "PyQt5"):
@@ -32,21 +32,27 @@ def __init__(self):
3232
splitter = QtWidgets.QSplitter()
3333

3434
self.button = QtWidgets.QPushButton("Hello world", self)
35-
self.canvas = QRenderWidget(splitter)
35+
self.button2 = QtWidgets.QPushButton("pause", self)
36+
self.canvas = QRenderWidget(splitter, update_mode="continuous")
3637
self.output = QtWidgets.QTextEdit(splitter)
3738

3839
self.button.clicked.connect(self.whenButtonClicked)
40+
self.button2.clicked.connect(self.whenButton2Clicked)
3941

4042
splitter.addWidget(self.canvas)
4143
splitter.addWidget(self.output)
4244
splitter.setSizes([400, 300])
4345

46+
button_layout = QtWidgets.QVBoxLayout()
47+
button_layout.addWidget(self.button)
48+
button_layout.addWidget(self.button2)
4449
layout = QtWidgets.QHBoxLayout()
45-
layout.addWidget(self.button, 0)
50+
layout.addLayout(button_layout)
4651
layout.addWidget(splitter, 1)
4752
self.setLayout(layout)
4853

4954
self.show()
55+
self._paused = False
5056

5157
def addLine(self, line):
5258
t = self.output.toPlainText()
@@ -56,6 +62,19 @@ def addLine(self, line):
5662
def whenButtonClicked(self):
5763
self.addLine(f"Clicked at {time.time():0.1f}")
5864

65+
def whenButton2Clicked(self):
66+
# showcases how rendercanvas allows changes to sheduling interactively
67+
if self._paused:
68+
self.canvas.set_update_mode("continuous", max_fps=60)
69+
self.button2.setText("pause")
70+
self._paused = False
71+
else:
72+
# note: the cube example bases rotation on unix time, which we don't pause with this button
73+
# with "ondemand", resize events such as the window or the splitter will still trigger a draw!
74+
self.canvas.set_update_mode("ondemand")
75+
self.button2.setText("resume")
76+
self._paused = True
77+
5978

6079
app = QtWidgets.QApplication([])
6180
example = ExampleWidget()

0 commit comments

Comments
 (0)