from PyQt5.QtWidgets import * class Widget1(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent=parent) layout = QFormLayout(self) LineEditGraf = QLineEdit("график 1") NameX=QGroupBox("X") NameY = QGroupBox("Y") LineEditX = QLineEdit() LineEditY = QLineEdit() layout.addWidget(LineEditGraf) layout.addWidget(NameX) layout.addWidget(LineEditX) layout.addWidget(NameY) layout.addWidget(LineEditY) class Widget2(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent=parent) # Традиционная семья Лаяутов, где главный -- папа layout = QVBoxLayout(self) # папа-лаяут layout_funct = QHBoxLayout(self) # мама-лаяут layout_variab = QHBoxLayout(self) # сестра-лаяут # Дети-лаяуты layout_dop1 = QVBoxLayout(self) # умный детина layout_dop2 = QVBoxLayout(self) # так и сяк layout_dop3 = QVBoxLayout(self) # вовсе дурак Namelabel_variab = QLabel('Переменные', self) # заголовок перед кнопками layout.addWidget(Namelabel_variab) # Вложение в главный лаяут # Кнопки для выбора переменных VariabelsButton_t = QPushButton('t', self) VariabelsButton_p = QPushButton('p', self) VariabelsButton_f = QPushButton('f', self) # Подключение кнопок layout_variab.addWidget(VariabelsButton_t) layout_variab.addWidget(VariabelsButton_p) layout_variab.addWidget(VariabelsButton_f) layout.addLayout(layout_variab) # Вложение в главный лаяут # Создание текстового заголовка Namelabel_funct = QLabel('Тривиальные функции', self) layout.addWidget(Namelabel_funct) # Вложение в главный лаяут # Создание кнопок FunctonButton_exp = QPushButton('exp', self) FunctonButton_ln = QPushButton('ln', self) # Вложение кнопок по две в вертикальную коробку(лаяут) layout_dop1.addWidget(FunctonButton_exp) layout_dop1.addWidget(FunctonButton_ln) # Создание кнопок FunctonButton_abs = QPushButton('abs', self) FunctonButton_sin = QPushButton('sin', self) # Дети-лаяуты хранят по две кнопки, так красивее layout_dop2.addWidget(FunctonButton_abs) layout_dop2.addWidget(FunctonButton_sin) # Создание кнопок FunctonButton_cos = QPushButton('cos', self) FunctonButton_tg = QPushButton('tg', self) # Вложение кнопок layout_dop3.addWidget(FunctonButton_cos) layout_dop3.addWidget(FunctonButton_tg) # Вложение вертикальных лаяутов в горизонтальный layout_funct.addLayout(layout_dop1) layout_funct.addLayout(layout_dop2) layout_funct.addLayout(layout_dop3) layout.addLayout(layout_funct) # Вложение в главный лаяут class stackedExample(QWidget): def __init__(self, parent=None): QWidget.__init__(self, parent=parent) lay = QVBoxLayout(self) self.Stack = QStackedWidget() self.Stack.addWidget(Widget1()) self.Stack.addWidget(Widget2()) btnNext = QPushButton("Next") btnNext.clicked.connect(self.onNext) btnPrevious = QPushButton("Previous") btnPrevious.clicked.connect(self.onPrevious) btnLayout = QHBoxLayout() btnLayout.addWidget(btnPrevious) btnLayout.addWidget(btnNext) lay.addWidget(self.Stack) lay.addLayout(btnLayout) def onNext(self): self.Stack.setCurrentIndex((self.Stack.currentIndex()+1) % 2) def onPrevious(self): self.Stack.setCurrentIndex((self.Stack.currentIndex()-1) % 2) if __name__ == '__main__': import sys app = QApplication(sys.argv) w = stackedExample() w.show() sys.exit(app.exec_())