Здравствуйте. Имеется простенькое приложение калькулятора, состоящее из двух классов: Calculator, где отрисовывается весь интерфейс, и Slot, где обрабатываются нажатия на кнопки. Решил расширить приложение и добавить возможность выбрать в меню тип расчета: Калькулятор, Графики, Матрицы. Создал для этого отдельный класс Main, в котором добавил QGridLayout с QMenuBar на позиции (0,0). Теперь хочу добавить весь интерфейс из класса Calculator на позицию (1,0) QGridLayouta класса Main. Каким образом правильно это сделать?
Ниже приведен код для класса Main:
import sys
from PyQt5.QtWidgets import *
from calculator_opt import *
class Main(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
grid = QGridLayout()
self.setLayout(grid)
menu = QMenuBar()
menu_items = dict()
for name in ['Калькулятор','Графики','Матрицы']:
item = menu.addMenu(name)
menu_items[name] = item
calc = Calculator()
grid.addWidget(menu, 0, 0)
grid.addLayout(calc.grid, 1, 0)
self.show()
if __name__=='__main__':
app = QApplication(sys.argv)
main = Main()
sys.exit(app.exec_())
На это интерпретатор python ругается и выводит следующую ошибку:
QLayout::addChildLayout: layout "" already has a parent