Проблемы подключения логики к графическому интерфейсу 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))
