当前位置: 首页 > 知识库问答 >
问题:

在按下当前文件中的按钮后,如何打开另一个qt designer文件?

长孙燕七
2023-03-14

我通过一个qt designer程序创建了一个名为(first page)的简单文件,并在其中放置了一个名为(login)的按钮,我还使用相同的程序创建了另一个名为(second page)的简单文件

运行第一个文件并按下其中的按钮后,我想打开第二个文件,或者换句话说,我想将页面链接在一起。我怎么能这么做?。拜托我需要帮助。

第一个文件代码:

来自PyQt5。QtWidget导入QDialog,QApplication从PyQt5导入QtCore,QtGui,QtWidget,uic类Ui_MainWindow(对象):

def setupUi(self, MainWindow):
    MainWindow.setObjectName("MainWindow")
    MainWindow.resize(800, 600)
    self.centralwidget = QtWidgets.QWidget(MainWindow)
    self.centralwidget.setObjectName("centralwidget")
    self.pushButton = QtWidgets.QPushButton(self.centralwidget)
    self.pushButton.setGeometry(QtCore.QRect(170, 140, 91, 31))
    font = QtGui.QFont()
    font.setFamily("Times New Roman")
    font.setPointSize(12)
    font.setBold(True)
    font.setItalic(True)
    font.setWeight(75)
    self.pushButton.setFont(font)
    self.pushButton.setObjectName("pushButton")
    MainWindow.setCentralWidget(self.centralwidget)
    self.menubar = QtWidgets.QMenuBar(MainWindow)
    self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
    self.menubar.setObjectName("menubar")
    MainWindow.setMenuBar(self.menubar)
    self.statusbar = QtWidgets.QStatusBar(MainWindow)
    self.statusbar.setObjectName("statusbar")
    MainWindow.setStatusBar(self.statusbar)

    self.retranslateUi(MainWindow)
    QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):
    _translate = QtCore.QCoreApplication.translate
    MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
    self.pushButton.setText(_translate("MainWindow", "Login"))
    self.pushButton.clicked.connect(self.buttonClicked)
def buttonClicked(self,Ui):
    uic.loadUi('secondpage.ui',self)

如果名称==“main”:导入系统应用程序=QtWidgets。QApplication(sys.argv)主窗口=QtWidgets。QMainWindow()ui=ui\u MainWindow()ui。setupUi(主窗口)主窗口。show()sys。退出(app.exec_389;()

第一页文件第二页文件

共有1个答案

岳毅
2023-03-14

我知道你的意思。因此,有以下解决方案:

from PyQt5.QtWidgets import QDialog, QApplication from PyQt5 import QtCore, QtGui, QtWidgets,uic 

# Add second window import here
from second_file import Second_Ui_MainWindow

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(170, 140, 91, 31))
        font = QtGui.QFont()
        font.setFamily("Times New Roman")
        font.setPointSize(12)
        font.setBold(True)
        font.setItalic(True)
        font.setWeight(75)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")

        # Connect button with function
        self.pushButton,clicked.connect(lambda x: self.buttonClicked(MainWindow))

        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "Login"))
        self.pushButton.clicked.connect(self.buttonClicked)
    def buttonClicked(self, MainWindow):
        SecondScreen_MW = QtWidgets.QMainWindow()
        ui = Second_Ui_MainWindow()
        ui.setupUi(SecondScreen_MW )
        SecondScreen_MW.show()
        # (Optional) Hide first screen
        MainWindow.hide()

但是,正如@musicamante所说:“您不应该试图编辑pyuic文件,而应该按照使用设计器中的说明使用它们。此外,即使使用正确的方式加载UI,也不应该在已设置的小部件上使用loadUi。”

这种方法行得通,但不是最好的。如果你需要咨询可以联系我

 类似资料:
  • 我是一个新手,我正在尝试创建一个应用程序来在我的投资组合中使用。本质上,该程序是一个可以访问不同菜单的菜单(json文件:texas_pick.js,Breakth.js…),该程序旨在以按钮的形式显示菜单选项,按钮的详细信息从各自的json文件中检索。我面临的问题是,单击菜单选项时,会检索最后一个菜单项的数据。我将后端编程为只将商品名称和价格推送到数据库,而前端则检索这些数据并将其显示在表上。检

  • 问题内容: 我有一JFrame堂课,它是在Netbeans的设计部分制作的。我正在尝试创建一个登录按钮,该按钮将关闭当前框架并打开另一个框架,无论如何我可以这样做吗? 我努力了: 但我希望它在设计部分中可编辑! 问题答案: 双击NETBEANS中的“登录”按钮,或在Click事件上添加事件监听器(ActionListener)

  • 我创建了一个用于登录,我想在按钮“cont nou”被按下后用jpanel为新帐户打开一个新窗口,但不知道如何用jpanel将初始帧消失和出现。你有什么想法吗?谢谢你!这就是我到现在所做的: 这是,其登录名为:

  • 问题内容: 我刚开始使用Flask / Python。我想要实现的是在HTML中有一个下载按钮,它调用以下函数: 不完整的Flask代码为: 我面临的问题是我找不到下载此csv文件或将其作为JSON字符串返回的方法,因此可以使用Javascript下载。知道如何将其作为JSON发送或通过Flask本身下载吗?最好的方法是什么? 问题答案: 这是一种不使用Javascript下载CSV文件的方法:

  • 我开始用GUI制作Java计算器,但我遇到了一个问题。我是Java新手,如果我的问题很愚蠢,我很抱歉。我想知道如何正确地为Action Listener编写代码,这样我就可以按下一个按钮,并将该按钮上的文本显示在文本区域中。所有评论都是我试图做的,但没有成功。