импортировать ответственную страницу виджета для tabWidget Python - PullRequest
0 голосов
/ 09 апреля 2020

Я новичок в Pyqt5 и Python. я создал tabWidget в "mainWindow", используя qtDesigner. Я создал два виджета с именем Admin.py и student.py. теперь вы, ребята, можете сказать мне, как вызывать страницы на каждой вкладке.

спасибо в advn c.

mainWindow.py

from PyQt5 import QtCore, QtGui, QtWidgets
from admin import Ui_Form
from student import Ui_Form

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        -----------
        -----------
        self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
        self.tabWidget.setObjectName("tabWidget")
        self.tab = QtWidgets.QWidget()
        self.tab.setObjectName("tab")
        self.tabWidget.addTab(self.tab, "")
        self.tab_2 = QtWidgets.QWidget()
        self.tab_2.setObjectName("tab_2")
        self.tabWidget.addTab(self.tab_2, "")
        self.verticalLayout.addWidget(self.tabWidget)
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.label.setText(_translate("MainWindow", "MyApp"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Admin"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "Student"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

admin.py

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
---------
----------

1 Ответ

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

Если вам нужно добавить «страницы» в QTabWidget, и эти страницы находятся в отдельных файлах пользовательского интерфейса, то вам нужно добавить их, используя addTab().

Так как я предполагаю, что эти страницы будут единственными действительными страницами в виджете со вкладками, вам следует удалить страницы, созданные Designer (щелкните правой кнопкой мыши вкладку, затем выберите «Удалить» в подменю «Страница x of y ...»).

Обратите внимание, что вы, кажется, пытаетесь создать свою программу, отредактировав файлы, сгенерированные pyuic, что не должно выполняться никогда , поскольку они предназначены только для использования в качестве импортированных модулей, и не должен редактироваться по любой причине. Узнайте больше о , используя Designer , чтобы лучше понять, как с ними обращаться.

Предполагая, что вы воссоздаете файлы с помощью pyui c и никогда больше не трогаете эти python файлы, кроме перезаписи их всякий раз, когда вы обновите их исходный интерфейс и измените имена объектов двух виджетов на AdminForm и StudentForm, вот пример того, что вы можете сделать.

from PyQt5 import QtCore, QtGui, QtWidgets
from mainWindow import Ui_MainWindow
from admin import Ui_AdminForm
from student import Ui_StudentForm


class AdminPage(QtWidgets.QWidget, Ui_AdminForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setupUi(self)


class StudentPage(QtWidgets.QWidget, Ui_StudentForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setupUi(self)


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

        self.adminPage = AdminPage()
        self.tabWidget.addTab(self.adminPage, 'Admin')

        self.studentPage = StudentPage()
        self.tabWidget.addTab(self.studentPage, 'Student')


if __name__ == '__main__':
    import sys
    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...