10
10
import time
11
11
import importlib
12
12
13
- from triangle import setup_drawing_sync
13
+ from cube import setup_drawing_sync
14
14
15
15
# For the sake of making this example Just Work, we try multiple QT libs
16
16
for lib in ("PySide6" , "PyQt6" , "PySide2" , "PyQt5" ):
@@ -32,21 +32,27 @@ def __init__(self):
32
32
splitter = QtWidgets .QSplitter ()
33
33
34
34
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" )
36
37
self .output = QtWidgets .QTextEdit (splitter )
37
38
38
39
self .button .clicked .connect (self .whenButtonClicked )
40
+ self .button2 .clicked .connect (self .whenButton2Clicked )
39
41
40
42
splitter .addWidget (self .canvas )
41
43
splitter .addWidget (self .output )
42
44
splitter .setSizes ([400 , 300 ])
43
45
46
+ button_layout = QtWidgets .QVBoxLayout ()
47
+ button_layout .addWidget (self .button )
48
+ button_layout .addWidget (self .button2 )
44
49
layout = QtWidgets .QHBoxLayout ()
45
- layout .addWidget ( self . button , 0 )
50
+ layout .addLayout ( button_layout )
46
51
layout .addWidget (splitter , 1 )
47
52
self .setLayout (layout )
48
53
49
54
self .show ()
55
+ self ._paused = False
50
56
51
57
def addLine (self , line ):
52
58
t = self .output .toPlainText ()
@@ -56,6 +62,19 @@ def addLine(self, line):
56
62
def whenButtonClicked (self ):
57
63
self .addLine (f"Clicked at { time .time ():0.1f} " )
58
64
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
+
59
78
60
79
app = QtWidgets .QApplication ([])
61
80
example = ExampleWidget ()
0 commit comments