Erreiche "MainWindow" von SubWindow nicht.

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
GiJay
User
Beiträge: 36
Registriert: Freitag 5. März 2021, 14:40
Wohnort: Ratingen
Kontaktdaten:

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()
        ...
        ..
        .
        
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten