Pyqt5 Qt Designer问题,带有“后退”按钮

时间:2018-10-19 19:17:42

标签: python python-3.x pyqt pyqt5 qt-designer

我是新来的,我需要帮助。我要拥有一个返回bottun的功能以返回到主页。我将包括两个窗口的代码,所以请帮忙。

Main.py

import sys    
from PyQt5 import QtCore, QtGui, QtWidgets
from Registrati import Ui_RegistratiWindows

class Ui_MainWindow(object):
        def openWindow(self):
            self.window = QtWidgets.QMainWindow()
            self.ui = Ui_RegistratiWindows()
            self.ui.setupUi(self.window)
            MainWindow.hide()
            self.window.show()
def showLabel(self):
    self.labeltestohelp.show()
    self.labeltestohelp1.show()

def setupUi(self, MainWindow):
    self.window = QtWidgets.QMainWindow()
    self.ui = Ui_RegistratiWindows()
    self.ui.setupUi(self.window)
    self.window.destroy()
    MainWindow.setObjectName("MainWindow")
    MainWindow.setWindowModality(QtCore.Qt.WindowModal)
    MainWindow.resize(222, 585)
    MainWindow.setMinimumSize(QtCore.QSize(222, 585))
    MainWindow.setMaximumSize(QtCore.QSize(222, 585))
    MainWindow.setBaseSize(QtCore.QSize(0, 0))
    MainWindow.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
    MainWindow.setFocusPolicy(QtCore.Qt.TabFocus)
    MainWindow.setStatusTip("")
    MainWindow.setWhatsThis("")
    MainWindow.setToolButtonStyle(QtCore.Qt.ToolButtonIconOnly)
    MainWindow.setTabShape(QtWidgets.QTabWidget.Rounded)
    self.centralwidget = QtWidgets.QWidget(MainWindow)
    self.centralwidget.setObjectName("centralwidget")
    self.LoginBotton = QtWidgets.QPushButton(self.centralwidget)
    self.LoginBotton.setGeometry(QtCore.QRect(10, 160, 201, 51))
    icon = QtGui.QIcon()
    icon.addPixmap(QtGui.QPixmap("loginicon-png.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
    self.LoginBotton.setIcon(icon)
    self.LoginBotton.setIconSize(QtCore.QSize(24, 24))
    self.LoginBotton.setAutoDefault(False)
    self.LoginBotton.setObjectName("LoginBotton")
    self.RegistratiBotton = QtWidgets.QPushButton(self.centralwidget)
    self.RegistratiBotton.setGeometry(QtCore.QRect(10, 280, 201, 51))
    icon1 = QtGui.QIcon()
    icon1.addPixmap(QtGui.QPixmap("RegisterIcon.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
    self.RegistratiBotton.setIcon(icon1)
    self.RegistratiBotton.setIconSize(QtCore.QSize(24, 24))
    self.RegistratiBotton.setObjectName("RegistratiBotton")

    self.RegistratiBotton.clicked.connect(self.openWindow)

    self.Esci = QtWidgets.QPushButton(self.centralwidget)
    self.Esci.setGeometry(QtCore.QRect(160, 510, 61, 31))
    icon2 = QtGui.QIcon()
    icon2.addPixmap(QtGui.QPixmap("exit-icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
    self.Esci.setIcon(icon2)
    self.Esci.setObjectName("Esci")
    self.labelImag = QtWidgets.QLabel(self.centralwidget)
    self.labelImag.setGeometry(QtCore.QRect(0, 10, 221, 121))
    self.labelImag.setText("")
    self.labelImag.setPixmap(QtGui.QPixmap("TopImage.png"))
    self.labelImag.setScaledContents(True)
    self.labelImag.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
    self.labelImag.setWordWrap(False)
    self.labelImag.setObjectName("labelImag")
    self.InfoButton = QtWidgets.QPushButton(self.centralwidget)
    self.InfoButton.setGeometry(QtCore.QRect(160, 390, 61, 51))
    icon3 = QtGui.QIcon()
    icon3.addPixmap(QtGui.QPixmap("Info.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
    self.InfoButton.setIcon(icon3)
    self.InfoButton.setObjectName("InfoButton")

    self.InfoButton.clicked.connect(self.showLabel)

    self.labeltestohelp = QtWidgets.QLabel(self.centralwidget)
    self.labeltestohelp.setEnabled(False)
    self.labeltestohelp.setGeometry(QtCore.QRect(10, 110, 201, 41))
    self.labeltestohelp.setCursor(QtGui.QCursor(QtCore.Qt.WhatsThisCursor))
    self.labeltestohelp.setFrameShape(QtWidgets.QFrame.Box)
    self.labeltestohelp.setWordWrap(True)
    self.labeltestohelp.setIndent(10)
    self.labeltestohelp.setObjectName("labeltestohelp")
    self.labeltestohelp.hide()
    self.labeltestohelp1 = QtWidgets.QLabel(self.centralwidget)
    self.labeltestohelp1.setEnabled(False)
    self.labeltestohelp1.setGeometry(QtCore.QRect(10, 230, 201, 41))
    self.labeltestohelp1.setCursor(QtGui.QCursor(QtCore.Qt.WhatsThisCursor))
    self.labeltestohelp1.setMouseTracking(False)
    self.labeltestohelp1.setFrameShape(QtWidgets.QFrame.Box)
    self.labeltestohelp1.setTextFormat(QtCore.Qt.AutoText)
    self.labeltestohelp1.setWordWrap(True)
    self.labeltestohelp1.setIndent(18)
    self.labeltestohelp1.setOpenExternalLinks(False)
    self.labeltestohelp1.setObjectName("labeltestohelp1")
    self.labeltestohelp1.hide()
    MainWindow.setCentralWidget(self.centralwidget)
    self.menubar = QtWidgets.QMenuBar(MainWindow)
    self.menubar.setGeometry(QtCore.QRect(0, 0, 222, 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", "E-Learning"))
    self.LoginBotton.setText(_translate("MainWindow", "Login"))
    self.RegistratiBotton.setText(_translate("MainWindow", "Registrati"))
    self.Esci.setText(_translate("MainWindow", "Esci"))
    self.InfoButton.setText(_translate("MainWindow", "Info"))
    self.labeltestohelp.setText(_translate("MainWindow", "Info: Usa Login se sei già Registrato!"))
    self.labeltestohelp1.setText(_translate("MainWindow", "Info: Registrati per Accedere ai contenuti"))



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

和第二个窗口Registrati.py

import os
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from Domanda import Ui_Infowindows


class Ui_RegistratiWindows(object):
    def Indietro(self):
        os.system("py Main.py")

    def showLabel(self):
        self.labeltestohelp.show()
        self.labeltestohelp1.show()
        self.labeltestohelp1_3.show()
    def setupUi(self, RegistratiWindows):
        RegistratiWindows.setObjectName("RegistratiWindows")
        RegistratiWindows.resize(222, 585)
        RegistratiWindows.setMinimumSize(QtCore.QSize(222, 585))
        RegistratiWindows.setMaximumSize(QtCore.QSize(222, 585))
        self.centralwidget = QtWidgets.QWidget(RegistratiWindows)
        self.centralwidget.setObjectName("centralwidget")
        self.labelImag = QtWidgets.QLabel(self.centralwidget)
        self.labelImag.setGeometry(QtCore.QRect(60, 50, 111, 101))
        self.labelImag.setText("")
        self.labelImag.setPixmap(QtGui.QPixmap("img_504963.png"))
        self.labelImag.setScaledContents(True)
        self.labelImag.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
        self.labelImag.setWordWrap(False)
        self.labelImag.setObjectName("labelImag")
        self.labelTitolo = QtWidgets.QLabel(self.centralwidget)
        self.labelTitolo.setGeometry(QtCore.QRect(0, 0, 221, 41))
        font = QtGui.QFont()
        font.setFamily("Gill Sans MT")
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.labelTitolo.setFont(font)
        self.labelTitolo.setScaledContents(False)
        self.labelTitolo.setAlignment(QtCore.Qt.AlignCenter)
        self.labelTitolo.setObjectName("labelTitolo")
        self.lineEditUsername = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEditUsername.setGeometry(QtCore.QRect(12, 190, 201, 20))
        self.lineEditUsername.setObjectName("lineEditUsername")
        self.lineEditUsername_2 = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEditUsername_2.setGeometry(QtCore.QRect(10, 290, 201, 20))
        self.lineEditUsername_2.setObjectName("lineEditUsername_2")
        self.labelusername = QtWidgets.QLabel(self.centralwidget)
        self.labelusername.setGeometry(QtCore.QRect(10, 170, 101, 16))
        self.labelusername.setObjectName("labelusername")
        self.labelusername_2 = QtWidgets.QLabel(self.centralwidget)
        self.labelusername_2.setGeometry(QtCore.QRect(10, 270, 101, 16))
        self.labelusername_2.setObjectName("labelusername_2")
        self.InfoButton = QtWidgets.QPushButton(self.centralwidget)
        self.InfoButton.setGeometry(QtCore.QRect(160, 390, 61, 51))
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("Info.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.InfoButton.setIcon(icon)
        self.InfoButton.setObjectName("InfoButton")

        self.InfoButton.clicked.connect(self.showLabel)

        self.Esci_2 = QtWidgets.QPushButton(self.centralwidget)
        self.Esci_2.setGeometry(QtCore.QRect(160, 510, 61, 31))
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap("exit-icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.Esci_2.setIcon(icon1)
        self.Esci_2.setObjectName("Esci_2")
        self.labeltestohelp = QtWidgets.QLabel(self.centralwidget)
        self.labeltestohelp.setEnabled(False)
        self.labeltestohelp.setGeometry(QtCore.QRect(10, 220, 201, 41))
        self.labeltestohelp.setCursor(QtGui.QCursor(QtCore.Qt.WhatsThisCursor))
        self.labeltestohelp.setFrameShape(QtWidgets.QFrame.Box)
        self.labeltestohelp.setWordWrap(True)
        self.labeltestohelp.setIndent(15)
        self.labeltestohelp.setObjectName("labeltestohelp")
        self.labeltestohelp.hide()
        self.labeltestohelp1 = QtWidgets.QLabel(self.centralwidget)
        self.labeltestohelp1.setEnabled(False)
        self.labeltestohelp1.setGeometry(QtCore.QRect(10, 320, 201, 41))
        self.labeltestohelp1.setCursor(QtGui.QCursor(QtCore.Qt.WhatsThisCursor))
        self.labeltestohelp1.setMouseTracking(False)
        self.labeltestohelp1.setFrameShape(QtWidgets.QFrame.Box)
        self.labeltestohelp1.setTextFormat(QtCore.Qt.AutoText)
        self.labeltestohelp1.setWordWrap(True)
        self.labeltestohelp1.setIndent(18)
        self.labeltestohelp1.setOpenExternalLinks(False)
        self.labeltestohelp1.setObjectName("labeltestohelp1")
        self.labeltestohelp1.hide()
        self.labeltestohelp1_3 = QtWidgets.QLabel(self.centralwidget)
        self.labeltestohelp1_3.setEnabled(False)
        self.labeltestohelp1_3.setGeometry(QtCore.QRect(70, 390, 81, 81))
        self.labeltestohelp1_3.setCursor(QtGui.QCursor(QtCore.Qt.WhatsThisCursor))
        self.labeltestohelp1_3.setMouseTracking(False)
        self.labeltestohelp1_3.setFrameShape(QtWidgets.QFrame.Box)
        self.labeltestohelp1_3.setTextFormat(QtCore.Qt.AutoText)
        self.labeltestohelp1_3.setWordWrap(True)
        self.labeltestohelp1_3.setIndent(8)
        self.labeltestohelp1_3.setOpenExternalLinks(False)
        self.labeltestohelp1_3.setObjectName("labeltestohelp1_3")
        self.labeltestohelp1_3.hide()
        self.RegButtun = QtWidgets.QPushButton(self.centralwidget)
        self.RegButtun.setGeometry(QtCore.QRect(0, 390, 61, 61))
        self.RegButtun.setText("Registrati")
        self.RegButtun.setObjectName("RegButtun")
        self.IndietroButtun = QtWidgets.QPushButton(self.centralwidget)
        self.IndietroButtun.setGeometry(QtCore.QRect(0, 480, 61, 61))
        self.IndietroButtun.setText("Back")
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap("back.png"), QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.IndietroButtun.setIcon(icon2)
        self.IndietroButtun.setObjectName("IndietroButtun")

        self.IndietroButtun.clicked.connect(self.Indietro)

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

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

    def retranslateUi(self, RegistratiWindows):
        _translate = QtCore.QCoreApplication.translate
        RegistratiWindows.setWindowTitle(_translate("RegistratiWindows", "Registrati"))
        self.labelTitolo.setText(_translate("RegistratiWindows", "Registra il tuo volto"))
        self.labelusername.setText(_translate("RegistratiWindows", "Username:"))
        self.labelusername_2.setText(_translate("RegistratiWindows", "Password:"))
        self.InfoButton.setText(_translate("RegistratiWindows", "Info"))
        self.Esci_2.setText(_translate("RegistratiWindows", "Esci"))
        self.labeltestohelp.setText(_translate("RegistratiWindows", "Info: Inserisci il tuo Username che verra usato per identificarti"))
        self.labeltestohelp1.setText(_translate("RegistratiWindows", "Info: Inserisci la tua Password per accedere ai tuoi contenuti"))
        self.labeltestohelp1_3.setText(_translate("RegistratiWindows", "Info: Clicca su Registrati per far iniziare la fase di registrazione del tuo volto"))




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

因此,这两个窗口我都可以从Main.py-> Registrati.py中打开,但是当我想返回到主窗口时,可以使用os.system()(可以正常使用),但是Registrati窗口仍然存在在后台打开。所以请给我同样的提示,以简化Registrati窗口。谢谢!。

1 个答案:

答案 0 :(得分:0)

根据要执行的操作(要运行两个单独的应用程序还是Registrati.py只是要由Main.py打开的对话框?),有两种解决方案:

  1. 第一个解决方案是使Registrati.py成为对话框,因此从Main.py开始,您将不会运行完整的应用程序,而Back button仅是Close按钮对话框中。
  2. 第二种解决方案是将Back button连接到quit()启动的应用程序的Registrati.py插槽,这样您就可以关闭第二个应用程序,并且只有第一个应用程序仍在运行。