Multiple Window opening PyQT5

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
starstrike
User
Beiträge: 14
Registriert: Donnerstag 3. Oktober 2019, 09:16

Hallo zusammen,
ich bin mal wieder mit einem neuen Problem bei euch.
Zur Zeit bin ich dabei, von einem Window in ein nächstes zu kommen per push button.
Das funktioniert auch schon alles gut.
Ich habe 4 Fenster.
Von 1 nach 2 klappt.
und von 2 nach 3 auch.
Aber ich würde gerne mit Window 1 starten und per Push Button auf 2 und anschließend auf 3...4 .
Leider finde ich dazu nichts im Internet.

Anbei sende ich euch mal einen Mustercode.

1.Fenster:

Code: Alles auswählen

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'ersteFenster.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets



class Ui_StartFenster(object):
        
    def openWindow2(self):
        from zweitesFenster import Ui_Rotortypauswaehlen
        self.window2 = QtWidgets.QDialog()
        self.ui = Ui_Rotortypauswaehlen()
        self.ui.setupUi(self.window2)
        StartFenster.hide()
        self.window2.show()
        
    #def openWindow3(self):
        #from drittesFenster import Ui_Dialog
        #self.window3 = QtWidgets.QDialog()
        #self.ui = Ui_Dialog()
        #self.ui.setupUi(self.window3)
        #Rotortypauswaehlen.hide()
        #self.window3.show()
        
        
    def setupUi(self, StartFenster):
        StartFenster.setObjectName("StartFenster")
        StartFenster.resize(790, 435)
        self.centralwidget = QtWidgets.QWidget(StartFenster)
        self.centralwidget.setObjectName("centralwidget")
        
        self.buttonstart = QtWidgets.QPushButton(self.centralwidget)
        self.buttonstart.setGeometry(QtCore.QRect(240, 300, 99, 30))
        self.buttonstart.setObjectName("buttonstart")
        self.buttonstart.clicked.connect(self.openWindow2)
        
        self.buttonabbruch = QtWidgets.QPushButton(self.centralwidget)
        self.buttonabbruch.setGeometry(QtCore.QRect(400, 300, 99, 30))
        self.buttonabbruch.setObjectName("buttonabbruch")
        
        self.label_siemensfenster = QtWidgets.QLabel(self.centralwidget)
        self.label_siemensfenster.setGeometry(QtCore.QRect(10, -20, 731, 331))
        self.label_siemensfenster.setStyleSheet("image: url(:/newPrefix/Download.png);")
        self.label_siemensfenster.setObjectName("label_siemensfenster")
        
        self.label_copyrights = QtWidgets.QLabel(self.centralwidget)
        self.label_copyrights.setGeometry(QtCore.QRect(10, 350, 171, 22))
        self.label_copyrights.setTextFormat(QtCore.Qt.RichText)
        self.label_copyrights.setObjectName("label_copyrights")
        
        self.dateTimeEdit = QtWidgets.QDateTimeEdit(self.centralwidget)
        self.dateTimeEdit.setGeometry(QtCore.QRect(600, 350, 194, 32))
        self.dateTimeEdit.setObjectName("dateTimeEdit")
        StartFenster.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(StartFenster)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 790, 28))
        self.menubar.setObjectName("menubar")
        StartFenster.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(StartFenster)
        self.statusbar.setObjectName("statusbar")
        StartFenster.setStatusBar(self.statusbar)

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

    def retranslateUi(self, StartFenster):
        _translate = QtCore.QCoreApplication.translate
        StartFenster.setWindowTitle(_translate("StartFenster", "Rotor-Heizprozess"))
        self.buttonstart.setText(_translate("StartFenster", "Los geht\'s!"))
        self.buttonabbruch.setText(_translate("StartFenster", "Abbrechen"))
        self.label_siemensfenster.setText(_translate("StartFenster", "<html><head/><body><p><br/></p></body></html>"))
        self.label_copyrights.setText(_translate("StartFenster", "<html><head/><body><p><span style=\" font-size:10pt; font-style:italic; text-decoration: underline;\">Copyright Horstmann, Weidner</span></p></body></html>"))

import source

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    StartFenster = QtWidgets.QMainWindow()
    ui = Ui_StartFenster()
    ui.setupUi(StartFenster)
    StartFenster.show()
    sys.exit(app.exec_())
    
2. Fenster :

Code: Alles auswählen

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'zweitesFenster.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets
from drittesFenster import Ui_Dialog

class Ui_Rotortypauswaehlen(object):
        
    def openWindow3(self):
        self.window = QtWidgets.QDialog()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self.window)
        Rotortypauswaehlen.hide()
        self.window.show()
        
    def setupUi(self, Rotortypauswaehlen):
        Rotortypauswaehlen.setObjectName("Rotortypauswaehlen")
        Rotortypauswaehlen.resize(790, 435)
        
        self.label = QtWidgets.QLabel(Rotortypauswaehlen)
        self.label.setGeometry(QtCore.QRect(10, 210, 211, 22))
        self.label.setObjectName("label")
        self.label_copyrights = QtWidgets.QLabel(Rotortypauswaehlen)
        self.label_copyrights.setGeometry(QtCore.QRect(10, 400, 171, 22))
        self.label_copyrights.setTextFormat(QtCore.Qt.RichText)
        self.label_copyrights.setObjectName("label_copyrights")
        
        self.start = QtWidgets.QPushButton(Rotortypauswaehlen)
        self.start.setGeometry(QtCore.QRect(231, 331, 99, 30))
        self.start.setObjectName("start")
        self.start.clicked.connect(self.openWindow3)
        
        self.abbrechen = QtWidgets.QPushButton(Rotortypauswaehlen)
        self.abbrechen.setGeometry(QtCore.QRect(380, 330, 99, 30))
        self.abbrechen.setObjectName("abbrechen")
        
        self.dateTimeEdit = QtWidgets.QDateTimeEdit(Rotortypauswaehlen)
        self.dateTimeEdit.setGeometry(QtCore.QRect(580, 390, 194, 32))
        self.dateTimeEdit.setObjectName("dateTimeEdit")
        
        self.widget = QtWidgets.QWidget(Rotortypauswaehlen)
        self.widget.setGeometry(QtCore.QRect(230, 140, 143, 161))
        self.widget.setObjectName("widget")
        
        self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        
        self.radioButton = QtWidgets.QRadioButton(self.widget)
        self.radioButton.setObjectName("radioButton")
        self.verticalLayout.addWidget(self.radioButton)
        self.radioButton_2 = QtWidgets.QRadioButton(self.widget)
        self.radioButton_2.setObjectName("radioButton_2")
        self.verticalLayout.addWidget(self.radioButton_2)
        self.radioButton_3 = QtWidgets.QRadioButton(self.widget)
        self.radioButton_3.setObjectName("radioButton_3")
        self.verticalLayout.addWidget(self.radioButton_3)
        self.radioButton_4 = QtWidgets.QRadioButton(self.widget)
        self.radioButton_4.setObjectName("radioButton_4")
        self.verticalLayout.addWidget(self.radioButton_4)
        self.radioButton_5 = QtWidgets.QRadioButton(self.widget)
        self.radioButton_5.setObjectName("radioButton_5")
        self.verticalLayout.addWidget(self.radioButton_5)

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

    def retranslateUi(self, Rotortypauswaehlen):
        _translate = QtCore.QCoreApplication.translate
        Rotortypauswaehlen.setWindowTitle(_translate("Rotortypauswaehlen", "Rotor-Heizprozess"))
        self.label.setText(_translate("Rotortypauswaehlen", "<html><head/><body><p align=\"center\"><span style=\" font-weight:600; text-decoration: underline;\">Bitte Rotortyp auswählen:</span></p></body></html>"))
        self.label_copyrights.setText(_translate("Rotortypauswaehlen", "<html><head/><body><p><span style=\" font-size:10pt; font-style:italic;\">Copyright Horstmann, Weidner</span></p></body></html>"))
        self.start.setText(_translate("Rotortypauswaehlen", "Start!"))
        self.abbrechen.setText(_translate("Rotortypauswaehlen", "Abbruch!"))
        self.radioButton.setText(_translate("Rotortypauswaehlen", "S4R3"))
        self.radioButton_2.setText(_translate("Rotortypauswaehlen", "TLRI 115-36"))
        self.radioButton_3.setText(_translate("Rotortypauswaehlen", "S4R4"))
        self.radioButton_4.setText(_translate("Rotortypauswaehlen", "Essenernudeln"))
        self.radioButton_5.setText(_translate("Rotortypauswaehlen", "heutefreisaufen"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Rotortypauswaehlen = QtWidgets.QDialog()
    ui = Ui_Rotortypauswaehlen()
    ui.setupUi(Rotortypauswaehlen)
    Rotortypauswaehlen.show()
    sys.exit(app.exec_())
3. Fenster:

Code: Alles auswählen

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'drittesFenster.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(790, 435)
        self.lcdNumber = QtWidgets.QLCDNumber(Dialog)
        self.lcdNumber.setGeometry(QtCore.QRect(620, 50, 64, 23))
        self.lcdNumber.setObjectName("lcdNumber")
        self.lcdNumber_2 = QtWidgets.QLCDNumber(Dialog)
        self.lcdNumber_2.setGeometry(QtCore.QRect(620, 90, 64, 23))
        self.lcdNumber_2.setObjectName("lcdNumber_2")
        self.label_9 = QtWidgets.QLabel(Dialog)
        self.label_9.setGeometry(QtCore.QRect(520, 50, 68, 22))
        self.label_9.setObjectName("label_9")
        self.label_10 = QtWidgets.QLabel(Dialog)
        self.label_10.setGeometry(QtCore.QRect(520, 90, 71, 22))
        self.label_10.setObjectName("label_10")
        self.timeEdit = QtWidgets.QTimeEdit(Dialog)
        self.timeEdit.setGeometry(QtCore.QRect(620, 130, 118, 32))
        self.timeEdit.setObjectName("timeEdit")
        self.label_11 = QtWidgets.QLabel(Dialog)
        self.label_11.setGeometry(QtCore.QRect(520, 140, 68, 22))
        self.label_11.setObjectName("label_11")
        self.pushButton = QtWidgets.QPushButton(Dialog)
        self.pushButton.setGeometry(QtCore.QRect(540, 220, 171, 131))
        self.pushButton.setObjectName("pushButton")
        self.label_copyrights = QtWidgets.QLabel(Dialog)
        self.label_copyrights.setGeometry(QtCore.QRect(620, 400, 171, 22))
        self.label_copyrights.setTextFormat(QtCore.Qt.RichText)
        self.label_copyrights.setObjectName("label_copyrights")
        self.widget = QtWidgets.QWidget(Dialog)
        self.widget.setGeometry(QtCore.QRect(100, 10, 361, 421))
        self.widget.setObjectName("widget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.progressBar_1 = QtWidgets.QProgressBar(self.widget)
        self.progressBar_1.setProperty("value", 24)
        self.progressBar_1.setObjectName("progressBar_1")
        self.verticalLayout.addWidget(self.progressBar_1)
        self.progressBar_2 = QtWidgets.QProgressBar(self.widget)
        self.progressBar_2.setProperty("value", 24)
        self.progressBar_2.setObjectName("progressBar_2")
        self.verticalLayout.addWidget(self.progressBar_2)
        self.progressBar_3 = QtWidgets.QProgressBar(self.widget)
        self.progressBar_3.setProperty("value", 24)
        self.progressBar_3.setObjectName("progressBar_3")
        self.verticalLayout.addWidget(self.progressBar_3)
        self.progressBar_4 = QtWidgets.QProgressBar(self.widget)
        self.progressBar_4.setProperty("value", 24)
        self.progressBar_4.setObjectName("progressBar_4")
        self.verticalLayout.addWidget(self.progressBar_4)
        self.progressBar_5 = QtWidgets.QProgressBar(self.widget)
        self.progressBar_5.setProperty("value", 24)
        self.progressBar_5.setObjectName("progressBar_5")
        self.verticalLayout.addWidget(self.progressBar_5)
        self.progressBar_6 = QtWidgets.QProgressBar(self.widget)
        self.progressBar_6.setProperty("value", 24)
        self.progressBar_6.setObjectName("progressBar_6")
        self.verticalLayout.addWidget(self.progressBar_6)
        self.progressBar_7 = QtWidgets.QProgressBar(self.widget)
        self.progressBar_7.setProperty("value", 24)
        self.progressBar_7.setObjectName("progressBar_7")
        self.verticalLayout.addWidget(self.progressBar_7)
        self.progressBar_8 = QtWidgets.QProgressBar(self.widget)
        self.progressBar_8.setProperty("value", 24)
        self.progressBar_8.setObjectName("progressBar_8")
        self.verticalLayout.addWidget(self.progressBar_8)
        self.widget1 = QtWidgets.QWidget(Dialog)
        self.widget1.setGeometry(QtCore.QRect(10, 20, 70, 401))
        self.widget1.setObjectName("widget1")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.widget1)
        self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.label_1 = QtWidgets.QLabel(self.widget1)
        self.label_1.setObjectName("label_1")
        self.verticalLayout_2.addWidget(self.label_1)
        self.label_2 = QtWidgets.QLabel(self.widget1)
        self.label_2.setObjectName("label_2")
        self.verticalLayout_2.addWidget(self.label_2)
        self.label_3 = QtWidgets.QLabel(self.widget1)
        self.label_3.setObjectName("label_3")
        self.verticalLayout_2.addWidget(self.label_3)
        self.label_4 = QtWidgets.QLabel(self.widget1)
        self.label_4.setObjectName("label_4")
        self.verticalLayout_2.addWidget(self.label_4)
        self.label_5 = QtWidgets.QLabel(self.widget1)
        self.label_5.setObjectName("label_5")
        self.verticalLayout_2.addWidget(self.label_5)
        self.label_6 = QtWidgets.QLabel(self.widget1)
        self.label_6.setObjectName("label_6")
        self.verticalLayout_2.addWidget(self.label_6)
        self.label_7 = QtWidgets.QLabel(self.widget1)
        self.label_7.setObjectName("label_7")
        self.verticalLayout_2.addWidget(self.label_7)
        self.label_8 = QtWidgets.QLabel(self.widget1)
        self.label_8.setObjectName("label_8")
        self.verticalLayout_2.addWidget(self.label_8)

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

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Rotor-Heizprozess"))
        self.label_9.setText(_translate("Dialog", "Strom"))
        self.label_10.setText(_translate("Dialog", "Spannung"))
        self.label_11.setText(_translate("Dialog", "Laufzeit:"))
        self.pushButton.setText(_translate("Dialog", "Abbruch!!"))
        self.label_copyrights.setText(_translate("Dialog", "<html><head/><body><p><span style=\" font-size:10pt; font-style:italic;\">Copyright Horstmann, Weidner</span></p></body></html>"))
        self.progressBar_1.setWhatsThis(_translate("Dialog", "<html><head/><body><p><br/></p></body></html>"))
        self.label_1.setText(_translate("Dialog", "Thermo1"))
        self.label_2.setText(_translate("Dialog", "Thermo2"))
        self.label_3.setText(_translate("Dialog", "Thermo3"))
        self.label_4.setText(_translate("Dialog", "Thermo4"))
        self.label_5.setText(_translate("Dialog", "Thermo5"))
        self.label_6.setText(_translate("Dialog", "Thermo6"))
        self.label_7.setText(_translate("Dialog", "Thermo7"))
        self.label_8.setText(_translate("Dialog", "Thermo8"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())
Ich möchte halt nur das MainProgramm starten und es soll durchlaufen bis zum 3. durch Pushbutton Eingabe.
Der Error kommt, sobald ich den PushButton auf dem 2. Fenster betätige.

Hier der Errorcode:

qt5ct: using qt5ct plugin
qt5ct: D-Bus global menu: no
Traceback (most recent call last):
File "/home/pi/Desktop/Testphase/neueGui2in1/zweitesFenster.py", line 18, in openWindow3
Rotortypauswaehlen.hide()
NameError: global name 'Rotortypauswaehlen' is not defined
Aborted


Gruß aus NRW und vielen Dank für eure Hilfe+Tipps!
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

Du hast die große WARNING-Zeile gelesen? Statt sich Python-Code generieren zu lassen, lädt man die .ui-Dateien direkt mit loadui. Dann kannst Du auch alles in eine Python-Datei packen, was alles etwas übersichtlicher macht.
Antworten