порядок (MRO): невозможно создать согласованное разрешение метода Pyqt5 (наследовать python файл) - PullRequest
1 голос
/ 11 апреля 2020

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

Привет Из моего предыдущего поста импортировать ответственную страницу виджета для tabWidget Python, все работало нормально. Теперь я создаю файлы пользовательского интерфейса и импортирую в .py файл, используя ui c .loadUi (без использования pyuic5), как показано в pi c. в то время как я пытаюсь наследовать страницу в application.py, она не работает. Я считаю, что я делаю неправильно, чтобы применить множественное наследование. Я перепробовал много подходов. но не добился успеха. Может кто-нибудь, пожалуйста, решить мою проблему. я даже пытался конвертировать пользовательские файлы, используя pyuic5 и наследовать в application.py. но результат тот же. вот ссылка на диск Google: https://drive.google.com/drive/folders/1UEGw1YR7hxKhH_KK9tX8CiHMgAbEVv5W?usp=sharing

1 Ответ

0 голосов
/ 11 апреля 2020

mainWindow.py

from PyQt5 import QtCore, QtGui, QtWidgets
import sys
from files.main_interfaces.mainWindow import Ui_MainWindow
class MainWindow(QtWidgets.QMainWindow,Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

mainStudent.py

from PyQt5 import QtCore, QtGui, QtWidgets
import sys
from files.main_interfaces.student import Ui_Form
class stdMainWindow(QtWidgets.QWidget,Ui_Form):
    def __init__(self, parent=None):
        super(stdMainWindow, self).__init__(parent)
        self.setupUi(self)

        self.pushButton.clicked.connect(self.function1)

    def function1(self):
        print("function called")

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = stdMainWindow()
    w.show()
    sys.exit(app.exec_())

наследуют оба файла mainWindow и mainStudent.py в приложении. py.

App.py

from PyQt5 import QtCore, QtGui, QtWidgets
from mainAcc import MainWindow
from mainStudent import stdMainWindow

class studentPage(stdMainWindow):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setupUi(self)


class MainWindow3(MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        # Add tab
        self.studentPage = studentPage()
        self.tabWidget.addTab(self.studentPage, 'Student')

if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow3()
    window.show()
    sys.exit(app.exec_())

Теперь, если я запускаю App.py, приложение работает, но страница студента два раза появляется и перекрывается. ошибка: QLayout: Попытка добавить QLayout "" к форме "studentPage", которая уже имеет макет

, теперь, пожалуйста, сообщите мне, где я допустил ошибку !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...