为 tabWidget Python 导入负责的小部件页面 [英] import responsible widget page for tabWidget Python

查看:44
本文介绍了为 tabWidget Python 导入负责的小部件页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是 Pyqt5 和 Python 的新手.我使用 qtDesigner 在mainWindow"中创建了一个 tabWidget.我创建了两个小部件,名为 Admin.py 和 student.py.现在你们能告诉我如何调用每个标签中的页面吗.

i am new in Pyqt5 and Python. i created a tabWidget in "mainWindow" using qtDesigner. i have created two widget called Admin.py and student.py. now can you guys tell me how to call the pages in each tab.

感谢 advnc.

ma​​inWindow.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")
---------
----------

推荐答案

如果您必须将页面"添加到 QTabWidget 并且这些页面位于单独的 ui 文件中,那么您需要使用 addTab().

If you have to add "pages" to a QTabWidget and those pages are in separate ui files, then you need to add them using addTab().

由于我认为这些页面将是选项卡小部件中唯一的实际页面,因此您应该删除 Designer 创建的页面(右键单击选项卡,然后从第 x 页,共 y..."子菜单).

Since I suppose that those pages will be the only actual pages in the tab widget, you should remove the pages that Designer has created (right click on the tab, then select "Delete" from the "Page x of y..." sub menu).

请注意,您似乎试图通过编辑由 pyuic 生成的文件来创建您的程序,这应该永远不要,因为它们仅用于使用作为导入的模块,不应出于任何原因进行编辑.阅读更多关于使用 Designer 以更好地了解如何处理它们.

Note that you seem to be trying to create your program by editing the files generated by pyuic, which should never be done, as they are only intended to be used as imported modules, and should not be edited for any reason. Read more about using Designer to better understand how to deal with them.

假设您使用 pyuic 重新创建文件,并且除了在更新源 ui 时覆盖它们之外,再也不碰这些 python 文件,并且您将两个小部件的对象名称更改为 AdminFormStudentForm,这是您可以做什么的示例.

Assuming you recreate the files with pyuic and never touch those python files anymore besides overwriting them whenever you update their source ui, and that you changed the object names of the two widgets to AdminForm and StudentForm, here's an example of what you could do.

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_())

这篇关于为 tabWidget Python 导入负责的小部件页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆