Seite 1 von 1

Fehlermeldung bei Aufruf eines neuen Fenster /Modul

Verfasst: Mittwoch 28. Dezember 2022, 12:00
von Tiger
Mit dem pgm „haupt“ erstelle ich ein Fenster mit einer Menu-Bar.

Code: Alles auswählen


import sys

from PySide6.QtCore import Qt
from PySide6.QtGui import QAction
from PySide6.QtWidgets import QMainWindow, QApplication, QLabel
from einstellungen import Frm_f1

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Fenster 1")

        label = QLabel("Achtung bei MacOS ist die Menu-Leiste ganz oben links")
        label.setAlignment(Qt.AlignCenter)
        self.setCentralWidget(label)

        button_action = QAction("Neues Fenster", self)
        button_action.triggered.connect(self.fensterNeu)

        menu = self.menuBar()

        file_menu = menu.addMenu("Einstellungen")
        file_menu.addAction(button_action)

        file_menu.addSeparator()




    def fensterNeu(self):
        print("Jetzt wir ein neues Fenster gestartet")
        Frm_f1.ab(self)



def main():
    app = QApplication(sys.argv)
    ex = MainWindow()
    ex.show()
    #print("Arguments1:", sys.argv)
    sys.exit(app.exec())


if __name__ == '__main__':
    main()



Wenn ich nun aus dem Pgm haupt „Einstellungen/ Neues Fenster“ auswähle, wird das Module "einstellungen" aufgerufen und es erscheint ein weiteres Fenster.
einstellungen

Code: Alles auswählen

import sys


from PySide6.QtCore import Qt
from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QLabel
from frm_f1 import Ui_frm_f1


class Frm_f1(QWidget,Ui_frm_f1):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

    def ab(self):
        #app = QApplication([])
        ex = Frm_f1()
        ex.show()
        sys.exit(app.exec())
So weit alles gut. Allerdings erhalte ich folgende Fehlermeldung:
NameError: name 'app' is not defined
Entferne ich den Kommentar bei #app = QApplication([]) erhalte ich folgende Fehlermeldung:
RuntimeError: Please destroy the QApplication singleton before creating a new QApplication instance.
Leider komme ich nicht weiter und beim Googeln bin ich nicht wirklich fündig geworden.- Kann mir jemand helfen?

Re: Fehlermeldung bei Aufruf eines neuen Fenster /Modul

Verfasst: Mittwoch 28. Dezember 2022, 12:24
von __deets__
“Pgm” ist eine komische Abkürzung für Programm. Warum kürzt du das ab, aber nicht jedes andere Wort?

Dein Problem ist einfach: ein Qt Programm kann nur eine App-Instanz haben, und nur einen exec Aufruf. Denn der startet den Mainloop, der alle Ereignisse verarbeitet.

Statt eines zweiten Fensters muss hier ein QDialog genutzt werden, und der hat auch eine exec-Methode, um eine modale Interaktion des Benutzers zu erzwingen, bis die Einstellungen getätigt sind.