Pyqt5 Qt Designer Проблема с кнопкой Назад - PullRequest
0 голосов
/ 19 октября 2018

Я новичок и мне нужна помощь.И что бы иметь функцию обратно на ботун для возврата на главную страницу.Я собираюсь включить код двух окон, поэтому, пожалуйста, помогите мне.

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 голосов
/ 19 октября 2018

В зависимости от того, что вы хотите сделать (вы хотите запустить два отдельных приложения или Registrati.py - это просто диалог, который должен быть открыт Main.py?), Есть два решения:

  1. Первое решение состоит в том, чтобы сделать Registrati.py диалоговым окном, чтобы из Main.py вы не запустили законченное приложение, и ваша Back button - не более чем кнопка Close в диалоговом окне.
  2. Второе решение - подключить Back button к слоту quit() приложения, запущенного Registrati.py, таким образом, вы закрываете второе приложение и у вас все еще работает только первое.
...