当前位置: 首页 > 面试题库 >

如何使用PyQt5在同一窗口中更改UI?

沙靖琪
2023-03-14
问题内容

我刚开始使用PyQt5。我一直在尝试完成一个看似非常简单的任务,但没有获得足够的信息。经过大量的谷歌搜索,我已经能够关闭一个窗口,并在另一个UI加载时启动另一个窗口,但这不是我要在这里做的。

我想在同一窗口中切换UI。我正在将UI文件作为全局变量加载到我的python文件中,其中每个UI有2个类。当我单击一个UI中的特定按钮时,我想切换到同一窗口中的另一个UI。下面是代码示例:

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
import sys
from PyQt5.uic import loadUiType
import os

about_company_ui, _ = loadUiType(os.path.join('frontend', 'ui', 'about_company.ui'))
intern_placement_ui, _ = loadUiType(os.path.join('frontend', 'ui', 'intern_placement.ui'))


class InternPlacement(QMainWindow, intern_placement_ui):

    def __init__(self):
        QMainWindow.__init__(self)
        self.setupUi(self)
        self.intern_pushButton.clicked.connect(self.change)

    def change(self):
        self.about_company = AboutCompany()
        self.about_company.show()
        self.close()


class AboutCompany(QMainWindow, about_company_ui):

    def __init__(self):
        QMainWindow.__init__(self)
        self.setupUi(self)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = InternPlacement()
    window.show()
    app.exec_()

问题答案:

您必须使用 QStackedWidget

import os
import sys
from PyQt5 import QtCore, QtGui, QtWidgets, uic

ui_folder = os.path.join("frontend", "ui")
about_company_ui, _ = uic.loadUiType(os.path.join(ui_folder, "about_company.ui"))
intern_placement_ui, _ = uic.loadUiType(os.path.join(ui_folder, "intern_placement.ui"))


class InternPlacement(QtWidgets.QMainWindow, intern_placement_ui):
    def __init__(self, parent=None):
        super(InternPlacement, self).__init__(parent)
        self.setupUi(self)


class AboutCompany(QtWidgets.QMainWindow, about_company_ui):
    def __init__(self, parent=None):
        super(AboutCompany, self).__init__(parent)
        self.setupUi(self)


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    intern_window = InternPlacement()
    about_window = AboutCompany()
    w = QtWidgets.QStackedWidget()
    w.addWidget(intern_window)
    w.addWidget(about_window)
    intern_window.intern_pushButton.clicked.connect(lambda: w.setCurrentIndex(1))
    w.resize(640, 480)
    w.show()
    sys.exit(app.exec_())


 类似资料:
  • 我在windows虚拟服务器上安装了Jenkins,并希望将其作为windows服务运行。 由于端口8080正被其他服务使用,我在jenkins中将http端口更改为8081。xml文件。但是,我根本无法启动localhost:8081/jenkins。我需要详细的说明/步骤来配置端口8081或运行Jenkins的东西。

  • 我实现了一个GUI,它显示两个下拉菜单,您可以在其中选择要显示的两组不同的图形。但是,当我使用以下代码创建图形时: 然后我尝试更新情节(例如plt.tight_layout) 只有最后一个用“plt”调用的情节被更新。我如何编写我的代码,以便我可以引用两个图。 我还试图创建一个图,其中两个图形并排显示,但由于需要独立更新图形,我遇到了更多的问题。如果你能让它这样工作,太好了!我只是在想,修复之前的

  • 我在做一个三维模型的生成设计项目。我需要创建一个简单的QT应用程序,允许用户使用VTK查看网格,并包括一些按钮反馈到生成算法。 GUI对我来说是一个全新的东西,所以我很难从这里为查看者集成代码到更广泛的程序中。现在,我只是试图在查看器中创建一个按钮和一个3D圆锥体。 到目前为止,我的代码在运行时崩溃。它使用给定链接中的QVTKRenderWindowInteractor()对象,该对象直接粘贴到文

  • 我有一个jsf页面,我有一个selectOneMenu和,我想打开一个对话框对selectOneMenu变化。 举个例子,如果用户从jsf selectOneMenu中选择一个值=“被动”,它应该在同一个页面上打开一个对话框或一个灯箱,我想像这里一样显示一个小jsf表单。(在selectOneMenu中选择特定值后,我想打开的框))http://www.primefaces.org/showcas

  • 我已经用tkinter在Python中写了几个图形用户界面程序。对于其中几个,我添加了一个“ADD”按钮,当按下该按钮时,它会向窗口添加一行新部件。由于编码这可能很耗时,我创建了一个类,其中包含一个方法,该方法可以添加一行小部件。然而,当我测试它时,它不能正常工作。一旦我添加了小部件的第一行,我添加的任何后续行似乎都只是放在前一行之上。我的代码如下: 此代码生成以下窗口,其中只有一行小部件: 创建

  • 本文向大家介绍python3+PyQt5使用数据库窗口视图,包括了python3+PyQt5使用数据库窗口视图的使用技巧和注意事项,需要的朋友参考一下 能够为数据库数据提供的最简单的用户界面之一就是窗体,窗体可以一次性呈现出来自同一记录的各个域。本文通过python3+pyqt5改写实现了python Qt gui 快速变成15章的例子。 运行结果: 以上就是本文的全部内容,希望对大家的学习有所帮