Skip to content

Instantly share code, notes, and snippets.

@fearofcode
Last active October 19, 2023 04:21
Show Gist options
  • Save fearofcode/00592b8cae818d08b30ca806e22ec0f2 to your computer and use it in GitHub Desktop.
Save fearofcode/00592b8cae818d08b30ca806e22ec0f2 to your computer and use it in GitHub Desktop.
example of changing currently displayed widgets/layout in PyQt6 using QStackedWidget
import sys
from PyQt6.QtWidgets import (
QApplication,
QCheckBox,
QLabel,
QLineEdit,
QRadioButton, )
from PyQt6.QtWidgets import QHBoxLayout, QFormLayout, QStackedWidget, QListWidget, QWidget
class StackedExample(QWidget):
def __init__(self):
super().__init__()
self.left_list = QListWidget()
self.setWindowTitle('StackedWidget demo')
self.left_list.insertItem(0, 'Contact')
self.left_list.insertItem(1, 'Personal')
self.left_list.insertItem(2, 'Educational')
self.stack = QStackedWidget(self)
self.left_list.currentRowChanged.connect(self.stack.setCurrentIndex)
self.name_address_form_stack = QWidget()
layout = QFormLayout()
layout.addRow("Name", QLineEdit())
layout.addRow("Address", QLineEdit())
self.name_address_form_stack.setLayout(layout)
self.biographical_information_stack = QWidget()
layout1 = QFormLayout()
sex = QHBoxLayout()
sex.addWidget(QRadioButton("Male"))
sex.addWidget(QRadioButton("Female"))
layout1.addRow(QLabel("Sex"), sex)
layout1.addRow("Date of Birth", QLineEdit())
self.biographical_information_stack.setLayout(layout1)
self.academic_subjects_stack = QWidget()
layout2 = QHBoxLayout()
layout2.addWidget(QLabel("Subjects"))
layout2.addWidget(QCheckBox("Physics"))
layout2.addWidget(QCheckBox("Math"))
self.academic_subjects_stack.setLayout(layout2)
self.stack.addWidget(self.name_address_form_stack)
self.stack.addWidget(self.biographical_information_stack)
self.stack.addWidget(self.academic_subjects_stack)
hbox = QHBoxLayout(self)
hbox.addWidget(self.left_list)
hbox.addWidget(self.stack)
self.setLayout(hbox)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = StackedExample()
sys.exit(app.exec())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment