Проблемы подключения логики к графическому интерфейсу PyQt5

Есть код логики:

from graph2 import Ui_MainWindow
from PyQt5 import QtCore, QtGui, QtWidgets



class MainWindow(Ui_MainWindow):
    def __init__(self):
        super(MainWindow).__init__()
def setupUi(self, Dialog):
    super(MainWindow, self).setupUi(Dialog)




if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = MainWindow()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())

Код графики:

from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *

class Ui_MainWindow(object):
def setupUi(self, MainWindow):
    if not MainWindow.objectName():
        MainWindow.setObjectName(u"MainWindow")
    MainWindow.resize(640, 498)
    self.centralwidget = QWidget(MainWindow)
    self.centralwidget.setObjectName(u"centralwidget")
    self.gridLayout = QGridLayout(self.centralwidget)
    self.gridLayout.setObjectName(u"gridLayout")
    self.tabWidget = QTabWidget(self.centralwidget)
    self.tabWidget.setObjectName(u"tabWidget")
    self.tab = QWidget()
    self.tab.setObjectName(u"tab")
    self.gridLayout_5 = QGridLayout(self.tab)
    self.gridLayout_5.setObjectName(u"gridLayout_5")
    self.tableWidget_3 = QTableWidget(self.tab)
    if (self.tableWidget_3.columnCount() < 9):
        self.tableWidget_3.setColumnCount(9)
    __qtablewidgetitem = QTableWidgetItem()
    self.tableWidget_3.setHorizontalHeaderItem(0, __qtablewidgetitem)
    __qtablewidgetitem1 = QTableWidgetItem()
    self.tableWidget_3.setHorizontalHeaderItem(1, __qtablewidgetitem1)
    __qtablewidgetitem2 = QTableWidgetItem()
    self.tableWidget_3.setHorizontalHeaderItem(2, __qtablewidgetitem2)
    __qtablewidgetitem3 = QTableWidgetItem()
    self.tableWidget_3.setHorizontalHeaderItem(3, __qtablewidgetitem3)
    __qtablewidgetitem4 = QTableWidgetItem()
    self.tableWidget_3.setHorizontalHeaderItem(4, __qtablewidgetitem4)
    __qtablewidgetitem5 = QTableWidgetItem()
    self.tableWidget_3.setHorizontalHeaderItem(5, __qtablewidgetitem5)
    __qtablewidgetitem6 = QTableWidgetItem()
    self.tableWidget_3.setHorizontalHeaderItem(6, __qtablewidgetitem6)
    __qtablewidgetitem7 = QTableWidgetItem()
    self.tableWidget_3.setHorizontalHeaderItem(7, __qtablewidgetitem7)
    __qtablewidgetitem8 = QTableWidgetItem()
    self.tableWidget_3.setHorizontalHeaderItem(8, __qtablewidgetitem8)
    if (self.tableWidget_3.rowCount() < 1):
        self.tableWidget_3.setRowCount(1)
    __qtablewidgetitem9 = QTableWidgetItem()
    self.tableWidget_3.setVerticalHeaderItem(0, __qtablewidgetitem9)
    self.tableWidget_3.setObjectName(u"tableWidget_3")

    self.gridLayout_5.addWidget(self.tableWidget_3, 0, 0, 1, 1)

    self.gridLayout_21 = QGridLayout()
    self.gridLayout_21.setObjectName(u"gridLayout_21")
    self.groupBox = QGroupBox(self.tab)
    self.groupBox.setObjectName(u"groupBox")
    self.gridLayout_4 = QGridLayout(self.groupBox)
    self.gridLayout_4.setObjectName(u"gridLayout_4")
    self.pushButton_11 = QPushButton(self.groupBox)
    self.pushButton_11.setObjectName(u"pushButton_11")

    self.gridLayout_4.addWidget(self.pushButton_11, 2, 0, 1, 1)

    self.pushButton_9 = QPushButton(self.groupBox)
    self.pushButton_9.setObjectName(u"pushButton_9")

    self.gridLayout_4.addWidget(self.pushButton_9, 0, 0, 1, 1)

    self.pushButton_10 = QPushButton(self.groupBox)
    self.pushButton_10.setObjectName(u"pushButton_10")

    self.gridLayout_4.addWidget(self.pushButton_10, 1, 0, 1, 1)


    self.gridLayout_21.addWidget(self.groupBox, 0, 1, 1, 1)

    self.tabWidget_2 = QTabWidget(self.tab)
    self.tabWidget_2.setObjectName(u"tabWidget_2")
    self.tab_3 = QWidget()
    self.tab_3.setObjectName(u"tab_3")
    self.gridLayout_3 = QGridLayout(self.tab_3)
    self.gridLayout_3.setObjectName(u"gridLayout_3")
    self.gridLayout_8 = QGridLayout()
    self.gridLayout_8.setObjectName(u"gridLayout_8")
    self.widget = QWidget(self.tab_3)
    self.widget.setObjectName(u"widget")

    self.gridLayout_8.addWidget(self.widget, 0, 0, 1, 1)


    self.gridLayout_3.addLayout(self.gridLayout_8, 0, 0, 1, 1)

    self.tabWidget_2.addTab(self.tab_3, "")
    self.tab_4 = QWidget()
    self.tab_4.setObjectName(u"tab_4")
    self.gridLayout_6 = QGridLayout(self.tab_4)
    self.gridLayout_6.setObjectName(u"gridLayout_6")
    self.tabWidget_2.addTab(self.tab_4, "")

    self.gridLayout_21.addWidget(self.tabWidget_2, 0, 0, 1, 1)


    self.gridLayout_5.addLayout(self.gridLayout_21, 1, 0, 1, 1)

    self.tabWidget.addTab(self.tab, "")
    self.tab_2 = QWidget()
    self.tab_2.setObjectName(u"tab_2")
    self.tabWidget.addTab(self.tab_2, "")

    self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1)

    MainWindow.setCentralWidget(self.centralwidget)
    self.menubar = QMenuBar(MainWindow)
    self.menubar.setObjectName(u"menubar")
    self.menubar.setGeometry(QRect(0, 0, 640, 21))
    MainWindow.setMenuBar(self.menubar)
    self.statusbar = QStatusBar(MainWindow)
    self.statusbar.setObjectName(u"statusbar")
    MainWindow.setStatusBar(self.statusbar)

    self.retranslateUi(MainWindow)

    self.tabWidget_2.setCurrentIndex(0)


    QMetaObject.connectSlotsByName(MainWindow)
# setupUi

def retranslateUi(self, MainWindow):
    MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
    ___qtablewidgetitem = self.tableWidget_3.horizontalHeaderItem(0)
    ___qtablewidgetitem.setText(QCoreApplication.translate("MainWindow", u"1", None));
    ___qtablewidgetitem1 = self.tableWidget_3.horizontalHeaderItem(1)
    ___qtablewidgetitem1.setText(QCoreApplication.translate("MainWindow", u"2", None));
    ___qtablewidgetitem2 = self.tableWidget_3.horizontalHeaderItem(2)
    ___qtablewidgetitem2.setText(QCoreApplication.translate("MainWindow", u"3", None));
    ___qtablewidgetitem3 = self.tableWidget_3.horizontalHeaderItem(3)
    ___qtablewidgetitem3.setText(QCoreApplication.translate("MainWindow", u"4", None));
    ___qtablewidgetitem4 = self.tableWidget_3.horizontalHeaderItem(4)
    ___qtablewidgetitem4.setText(QCoreApplication.translate("MainWindow", u"5", None));
    ___qtablewidgetitem5 = self.tableWidget_3.horizontalHeaderItem(5)
    ___qtablewidgetitem5.setText(QCoreApplication.translate("MainWindow", u"6", None));
    ___qtablewidgetitem6 = self.tableWidget_3.horizontalHeaderItem(6)
    ___qtablewidgetitem6.setText(QCoreApplication.translate("MainWindow", u"7", None));
    ___qtablewidgetitem7 = self.tableWidget_3.horizontalHeaderItem(7)
    ___qtablewidgetitem7.setText(QCoreApplication.translate("MainWindow", u"8", None));
    ___qtablewidgetitem8 = self.tableWidget_3.horizontalHeaderItem(8)
    ___qtablewidgetitem8.setText(QCoreApplication.translate("MainWindow", u"9", None));
    ___qtablewidgetitem9 = self.tableWidget_3.verticalHeaderItem(0)
    ___qtablewidgetitem9.setText(QCoreApplication.translate("MainWindow", u"1", None));
    self.groupBox.setTitle(QCoreApplication.translate("MainWindow", u"GroupBox", None))
    self.pushButton_11.setText(QCoreApplication.translate("MainWindow", u"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a", None))
    self.pushButton_9.setText(QCoreApplication.translate("MainWindow", u"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c ", None))
    self.pushButton_10.setText(QCoreApplication.translate("MainWindow", u"\u0423\u0434\u0430\u043b\u0438\u0442\u044c", None))
    self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_3), QCoreApplication.translate("MainWindow", u"\u0413\u0440\u0430\u0444\u0438\u043a", None))
    self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_4), QCoreApplication.translate("MainWindow", u"Tab 2", None))
    self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), QCoreApplication.translate("MainWindow", u"Tab 1", None))
    self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), QCoreApplication.translate("MainWindow", u"Tab 2", None))
# retranslateUi

Первый код должен подключатся к графике и запускать его. Но, этого не происходит. Как это решить? Код ошибки:

    Traceback (most recent call last):
  File "G:\PyCharm\Gui_Программы\Python\New\SL_lke2.1.py", line 21, in <module>
    ui.setupUi(Dialog)
  File "G:\PyCharm\Gui_Программы\Python\New\graph2.py", line 21, in setupUi
    self.centralwidget = QWidget(MainWindow)
TypeError: 'PySide2.QtWidgets.QWidget' called with wrong argument types:
  PySide2.QtWidgets.QWidget(QDialog)
Supported signatures:
  PySide2.QtWidgets.QWidget(typing.Optional[PySide2.QtWidgets.QWidget] = None, PySide2.QtCore.Qt.WindowFlags = Default(Qt.WindowFlags))

Ответы (1 шт):

Автор решения: S. Nick

1.Используйте или PySide2 или PyQt5.

2.Не изменяйте код, сгенерированный Qt Designer. Создайте другой класс, который наследуется от соответствующего виджета, и используйте созданный класс для его заполнения.

3.Форма в Qt Designer создана на основе виджета QMainWindow, а не QDialog.

4.Заполнение делается например так:

class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): # множественное наследование
    ...
    
        # QWidget::setupUi(QWidget *widget)
        # Настраивает пользовательский интерфейс для указанного виджета.
        # Примечание. Эта функция доступна для виджетов, 
        # которые являются производными от описаний пользовательского интерфейса, 
        # созданных с помощью uic.

        self.setupUi(self)

main.py

from PyQt5 import QtCore, QtGui, QtWidgets
from graph2 import Ui_MainWindow

#                         vvvvvvvvvvvv
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
       
        self.setupUi(self)                                # !!!
        
        # тут ваша логика
        # ...
        self.tabWidget_2.setCurrentIndex(0)
        # ...
        

if __name__ == "__main__":
    import sys

    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    
#    Dialog = QtWidgets.QDialog()
#    ui = MainWindow()
#    ui.setupUi(Dialog)
#    Dialog.show()
    sys.exit(app.exec_())

graph2.py

'''
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
'''
from PyQt5.Qt import *


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        if not MainWindow.objectName():
            MainWindow.setObjectName(u"MainWindow")
        MainWindow.resize(640, 498)
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName(u"centralwidget")
        self.gridLayout = QGridLayout(self.centralwidget)
        self.gridLayout.setObjectName(u"gridLayout")
        self.tabWidget = QTabWidget(self.centralwidget)
        self.tabWidget.setObjectName(u"tabWidget")
        self.tab = QWidget()
        self.tab.setObjectName(u"tab")
        self.gridLayout_5 = QGridLayout(self.tab)
        self.gridLayout_5.setObjectName(u"gridLayout_5")
        self.tableWidget_3 = QTableWidget(self.tab)
        if (self.tableWidget_3.columnCount() < 9):
            self.tableWidget_3.setColumnCount(9)
        __qtablewidgetitem = QTableWidgetItem()
        self.tableWidget_3.setHorizontalHeaderItem(0, __qtablewidgetitem)
        __qtablewidgetitem1 = QTableWidgetItem()
        self.tableWidget_3.setHorizontalHeaderItem(1, __qtablewidgetitem1)
        __qtablewidgetitem2 = QTableWidgetItem()
        self.tableWidget_3.setHorizontalHeaderItem(2, __qtablewidgetitem2)
        __qtablewidgetitem3 = QTableWidgetItem()
        self.tableWidget_3.setHorizontalHeaderItem(3, __qtablewidgetitem3)
        __qtablewidgetitem4 = QTableWidgetItem()
        self.tableWidget_3.setHorizontalHeaderItem(4, __qtablewidgetitem4)
        __qtablewidgetitem5 = QTableWidgetItem()
        self.tableWidget_3.setHorizontalHeaderItem(5, __qtablewidgetitem5)
        __qtablewidgetitem6 = QTableWidgetItem()
        self.tableWidget_3.setHorizontalHeaderItem(6, __qtablewidgetitem6)
        __qtablewidgetitem7 = QTableWidgetItem()
        self.tableWidget_3.setHorizontalHeaderItem(7, __qtablewidgetitem7)
        __qtablewidgetitem8 = QTableWidgetItem()
        self.tableWidget_3.setHorizontalHeaderItem(8, __qtablewidgetitem8)
        if (self.tableWidget_3.rowCount() < 1):
            self.tableWidget_3.setRowCount(1)
        __qtablewidgetitem9 = QTableWidgetItem()
        self.tableWidget_3.setVerticalHeaderItem(0, __qtablewidgetitem9)
        self.tableWidget_3.setObjectName(u"tableWidget_3")

        self.gridLayout_5.addWidget(self.tableWidget_3, 0, 0, 1, 1)

        self.gridLayout_21 = QGridLayout()
        self.gridLayout_21.setObjectName(u"gridLayout_21")
        self.groupBox = QGroupBox(self.tab)
        self.groupBox.setObjectName(u"groupBox")
        self.gridLayout_4 = QGridLayout(self.groupBox)
        self.gridLayout_4.setObjectName(u"gridLayout_4")
        self.pushButton_11 = QPushButton(self.groupBox)
        self.pushButton_11.setObjectName(u"pushButton_11")
        self.gridLayout_4.addWidget(self.pushButton_11, 2, 0, 1, 1)
        self.pushButton_9 = QPushButton(self.groupBox)
        self.pushButton_9.setObjectName(u"pushButton_9")
        self.gridLayout_4.addWidget(self.pushButton_9, 0, 0, 1, 1)
        self.pushButton_10 = QPushButton(self.groupBox)
        self.pushButton_10.setObjectName(u"pushButton_10")
        self.gridLayout_4.addWidget(self.pushButton_10, 1, 0, 1, 1)
        self.gridLayout_21.addWidget(self.groupBox, 0, 1, 1, 1)
        self.tabWidget_2 = QTabWidget(self.tab)
        self.tabWidget_2.setObjectName(u"tabWidget_2")
        self.tab_3 = QWidget()
        self.tab_3.setObjectName(u"tab_3")
        self.gridLayout_3 = QGridLayout(self.tab_3)
        self.gridLayout_3.setObjectName(u"gridLayout_3")
        self.gridLayout_8 = QGridLayout()
        self.gridLayout_8.setObjectName(u"gridLayout_8")
        self.widget = QWidget(self.tab_3)
        self.widget.setObjectName(u"widget")
        self.gridLayout_8.addWidget(self.widget, 0, 0, 1, 1)
        self.gridLayout_3.addLayout(self.gridLayout_8, 0, 0, 1, 1)
        self.tabWidget_2.addTab(self.tab_3, "")
        self.tab_4 = QWidget()
        self.tab_4.setObjectName(u"tab_4")
        self.gridLayout_6 = QGridLayout(self.tab_4)
        self.gridLayout_6.setObjectName(u"gridLayout_6")
        self.tabWidget_2.addTab(self.tab_4, "")
        self.gridLayout_21.addWidget(self.tabWidget_2, 0, 0, 1, 1)
        self.gridLayout_5.addLayout(self.gridLayout_21, 1, 0, 1, 1)
        self.tabWidget.addTab(self.tab, "")
        self.tab_2 = QWidget()
        self.tab_2.setObjectName(u"tab_2")
        self.tabWidget.addTab(self.tab_2, "")
        self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(MainWindow)
        self.menubar.setObjectName(u"menubar")
        self.menubar.setGeometry(QRect(0, 0, 640, 21))
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QStatusBar(MainWindow)
        self.statusbar.setObjectName(u"statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
#        self.tabWidget_2.setCurrentIndex(0)
        QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
        ___qtablewidgetitem = self.tableWidget_3.horizontalHeaderItem(0)
        ___qtablewidgetitem.setText(QCoreApplication.translate("MainWindow", u"1", None));
        ___qtablewidgetitem1 = self.tableWidget_3.horizontalHeaderItem(1)
        ___qtablewidgetitem1.setText(QCoreApplication.translate("MainWindow", u"2", None));
        ___qtablewidgetitem2 = self.tableWidget_3.horizontalHeaderItem(2)
        ___qtablewidgetitem2.setText(QCoreApplication.translate("MainWindow", u"3", None));
        ___qtablewidgetitem3 = self.tableWidget_3.horizontalHeaderItem(3)
        ___qtablewidgetitem3.setText(QCoreApplication.translate("MainWindow", u"4", None));
        ___qtablewidgetitem4 = self.tableWidget_3.horizontalHeaderItem(4)
        ___qtablewidgetitem4.setText(QCoreApplication.translate("MainWindow", u"5", None));
        ___qtablewidgetitem5 = self.tableWidget_3.horizontalHeaderItem(5)
        ___qtablewidgetitem5.setText(QCoreApplication.translate("MainWindow", u"6", None));
        ___qtablewidgetitem6 = self.tableWidget_3.horizontalHeaderItem(6)
        ___qtablewidgetitem6.setText(QCoreApplication.translate("MainWindow", u"7", None));
        ___qtablewidgetitem7 = self.tableWidget_3.horizontalHeaderItem(7)
        ___qtablewidgetitem7.setText(QCoreApplication.translate("MainWindow", u"8", None));
        ___qtablewidgetitem8 = self.tableWidget_3.horizontalHeaderItem(8)
        ___qtablewidgetitem8.setText(QCoreApplication.translate("MainWindow", u"9", None));
        ___qtablewidgetitem9 = self.tableWidget_3.verticalHeaderItem(0)
        ___qtablewidgetitem9.setText(QCoreApplication.translate("MainWindow", u"1", None));
        self.groupBox.setTitle(QCoreApplication.translate("MainWindow", u"GroupBox", None))
        self.pushButton_11.setText(QCoreApplication.translate("MainWindow", u"\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a", None))
        self.pushButton_9.setText(QCoreApplication.translate("MainWindow", u"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c ", None))
        self.pushButton_10.setText(QCoreApplication.translate("MainWindow", u"\u0423\u0434\u0430\u043b\u0438\u0442\u044c", None))
        self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_3), QCoreApplication.translate("MainWindow", u"\u0413\u0440\u0430\u0444\u0438\u043a", None))
        self.tabWidget_2.setTabText(self.tabWidget_2.indexOf(self.tab_4), QCoreApplication.translate("MainWindow", u"Tab 2", None))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), QCoreApplication.translate("MainWindow", u"Tab 1", None))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), QCoreApplication.translate("MainWindow", u"Tab 2", None))

введите сюда описание изображения

→ Ссылка