aboutsummaryrefslogtreecommitdiffstats
path: root/examples/widgets/tutorials/cannon/t7.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/widgets/tutorials/cannon/t7.py')
-rw-r--r--examples/widgets/tutorials/cannon/t7.py73
1 files changed, 73 insertions, 0 deletions
diff --git a/examples/widgets/tutorials/cannon/t7.py b/examples/widgets/tutorials/cannon/t7.py
new file mode 100644
index 000000000..1175107b8
--- /dev/null
+++ b/examples/widgets/tutorials/cannon/t7.py
@@ -0,0 +1,73 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
+
+# PySide6 tutorial 7
+
+
+import sys
+
+from PySide6.QtCore import Signal, Slot, Qt
+from PySide6.QtGui import QFont
+from PySide6.QtWidgets import (QApplication, QGridLayout, QLCDNumber,
+ QPushButton, QSlider, QVBoxLayout, QWidget)
+
+
+class LCDRange(QWidget):
+
+ value_changed = Signal(int)
+
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ lcd = QLCDNumber(2)
+
+ self.slider = QSlider(Qt.Horizontal)
+ self.slider.setRange(0, 99)
+ self.slider.setValue(0)
+
+ self.slider.valueChanged.connect(lcd.display)
+ self.slider.valueChanged.connect(self.value_changed)
+
+ layout = QVBoxLayout(self)
+ layout.addWidget(lcd)
+ layout.addWidget(self.slider)
+
+ def value(self):
+ return self.slider.value()
+
+ @Slot(int)
+ def set_value(self, value):
+ self.slider.setValue(value)
+
+
+class MyWidget(QWidget):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ quit = QPushButton("Quit")
+ quit.setFont(QFont("Times", 18, QFont.Bold))
+ quit.clicked.connect(qApp.quit) # noqa: F821
+
+ previous_range = None
+
+ layout = QVBoxLayout(self)
+ layout.addWidget(quit)
+ grid = QGridLayout()
+ layout.addLayout(grid)
+
+ for row in range(3):
+ for column in range(3):
+ lcd_range = LCDRange()
+ grid.addWidget(lcd_range, row, column)
+
+ if previous_range:
+ lcd_range.value_changed.connect(previous_range.set_value)
+
+ previous_range = lcd_range
+
+
+if __name__ == '__main__':
+ app = QApplication(sys.argv)
+ widget = MyWidget()
+ widget.show()
+ sys.exit(app.exec())