Seite 1 von 1

Erreiche "MainWindow" von SubWindow nicht.

Verfasst: Mittwoch 17. Januar 2024, 11:05
von GiJay
Hi,
ich glaube, es ist nicht die geschickteste Überschrift :?

MainApp.py enthältdie class MainWindow. Im MainWindow öffne ich diverse SubWindows. Diese habe ich in eine eigene Datei und Klasse gepackt. So gibt es z.B. objekt.py, kontakt.py und Setup,py. Wenn ich nun zum Beispiel vom SubWindow "setup.py" mit "self.mainwindow" auf das MainWindow zugreifen will, kennt der Interpreter nicht die class mainwindow. Ein Zugrif auf das Hauptfenster scheint nicht möglich.
Gibt es da eine Möglichkeit? Wie könnte ich eine Meldung in der ToolTip-Leiste auslösen?


* MainApp,py

Code: Alles auswählen

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

        self.main_space = QMdiArea()
        self.setCentralWidget(self.main_space)
        self.setWindowTitle("Anne's kleines BueroTool - Vers. 0.5")
        #
        appMenuBar = self.menuBar()
        menuDatei = appMenuBar.addMenu("&Datei")
        # SetUp
        menuDateiSetup = menuDatei.addAction("SetUp")
        menuDateiSetup.setShortcut("Ctrl+S")
        ...
        ..
        .
        
* SetUp.py

Code: Alles auswählen

class SubwindowSetUp(QWidget):
    #
    def __init__(self):
        #
        super(SubwindowSetUp, self).__init__()
        #
        self.setWindowTitle("SetUp")
        main_layout = QGridLayout()
        self.setLayout(main_layout)
        #
        tabwidget = QTabWidget()
        #
        page1 = ScreenPage()
        page2 = StylePage()
        ...
        ..
        .
        

Re: Erreiche "MainWindow" von SubWindow nicht.

Verfasst: Mittwoch 17. Januar 2024, 11:40
von __blackjack__
@GiJay: Das hat überhaupt nichts damit zu tun wie das auf Dateien aufgeteilt ist. Wenn man in einer Funktion oder Methode etwas verwenden will was keine Konstante ist, dann muss man das als Argument beim Aufruf übergeben. Entweder direkt, oder weil es bei Methoden zum Objekt gehört und über `self` abfragbar ist.

Die Frage ist, ob das hier überhaupt sinnvoll ist. Untergeordnete Widgets, sollten keinen Zugriff auf übergeordnete Widgets haben. Wenn die etwas auslösen oder mitteilen wollen, dann sollte es dafür Signale geben. Das oder die übergeordneten Widgets die über irgendwas informiert werden wollen, können die Signale dann mit Slots verbinden.