Seite 1 von 1

2 PYQT5 Fenster anzeigen

Verfasst: Sonntag 12. Dezember 2021, 17:14
von timm4444
Ich habe eine kurze Frage zu pyqt5:
Ich habe 2 pyqt5 Fenster und mochte sie nacheinander anzeigen. Man drückt im ersten einen Button und dann erscheint das andere und das erste verschwindet. Wie mache ich das? Erstelle ich ein neues Fenster oder Lösche ich den Fensterinhalt des 1. Fenster und setzte dann den des 2. Fenster rein?

Danke im vorraus für Lösungsansätze.

Re: 2 PYQT5 Fenster anzeigen

Verfasst: Sonntag 12. Dezember 2021, 17:22
von sparrow
Was hat dir an den Antworten in dem anderen Thread nicht gefallen?

Wenn es ein neues Fenster ist, wie willst du denn da einen Inhalt löschen?
Ein Fenster ist das, was man frei auf dem Bildschirm bewegen kann. In der Regel mit Buttons zum Mini- und Maximieren und zum Schließen.
Und wenn du weißt wie du das erste Fenster anzeist, dann weißt du auch, wie du ein zweites anzeigst: mit .show().

Und wie ich dir bereits in dem anderen Thread geschrieben haben: du musst dich bei Qt mit "Signals" beschäftigen. Und ein Fenster hat neben .show() auch andere Funktionen.

Re: 2 PYQT5 Fenster anzeigen

Verfasst: Sonntag 12. Dezember 2021, 17:43
von timm4444
ok, ich schaus mir noch mal an :-)

Re: 2 PYQT5 Fenster anzeigen

Verfasst: Sonntag 12. Dezember 2021, 19:18
von timm4444
Sorry, aber ich stehe gerade komplett auf dem Schlauch. :-(

"Signals" kenn ich, aber ich möchte eine Fenster anzeigen und wenn ich auf einen Button drücke soll sich ein zweites Fenster anzeigen und das erste soll nicht mehr zu sehen sein.

Codebeispiel wäre nett.(Sehr einfaches Fenster reicht)

Tut mir leid, falsch ich hier gerade irgendwie komplett "dumme" Frage stellen, aber ich bekomme es einfach nicht hin. :-(

Re: 2 PYQT5 Fenster anzeigen

Verfasst: Sonntag 12. Dezember 2021, 19:29
von Sirius3
Fenster Anzeigen und Verstecken ist ganz einfach:

Code: Alles auswählen

    def button_clicked(self):
        self.hide()
        self.other_window.show()

Re: 2 PYQT5 Fenster anzeigen

Verfasst: Sonntag 12. Dezember 2021, 19:40
von timm4444
bei mir startet das zweite Fenster nicht!

Code folgt:

Re: 2 PYQT5 Fenster anzeigen

Verfasst: Sonntag 12. Dezember 2021, 19:41
von timm4444

Code: Alles auswählen

import sys
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QMainWindow, QLabel, QGridLayout, QWidget
from PyQt5.QtCore import QSize

class HelloWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)

        self.setMinimumSize(QSize(640, 480))
        self.setWindowTitle("Hello world 1")

        centralWidget = QWidget(self)
        self.setCentralWidget(centralWidget)

        gridLayout = QGridLayout(self)
        centralWidget.setLayout(gridLayout)

        title = QLabel("Hello World from PyQt", self)
        title.setAlignment(QtCore.Qt.AlignCenter)
        gridLayout.addWidget(title, 0, 0)

    def closeEvent(self, event):
        event.ignore()
        print("1. Fenster schließen")
        mainWin.hide()

        mainWin2 = HelloWindow2()
        mainWin2.show()


class HelloWindow2(QMainWindow):
    def __init__(self):

        QMainWindow.__init__(self)
        print("2. Fenster offen")
        self.setMinimumSize(QSize(640, 480))
        self.setWindowTitle("Hello world")

        centralWidget = QWidget(self)
        self.setCentralWidget(centralWidget)

        gridLayout = QGridLayout(self)
        centralWidget.setLayout(gridLayout)

        title = QLabel("Hello World from PyQt 2", self)
        title.setAlignment(QtCore.Qt.AlignCenter)
        gridLayout.addWidget(title, 0, 0)

    def closeEvent(self, event):
        print("BYE")
        event.accept()


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    mainWin = HelloWindow()
    mainWin.show()
    sys.exit(app.exec_())

Re: 2 PYQT5 Fenster anzeigen

Verfasst: Sonntag 12. Dezember 2021, 20:51
von __deets__
Das Fenster wird angelegt, aber gleich wieder abgeräumt durch die Garbage Collection.

Leg das zweite Fenster in deiner main-Funktion an, übergib es an HelloWindow als Argument, Merk dir das da, und zeige es, wenn du das erste Fenster versteckst.

Re: 2 PYQT5 Fenster anzeigen

Verfasst: Montag 13. Dezember 2021, 18:16
von timm4444
Ok, danke. :-)