menuBar() ohne Untermenü?

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
steenhy
User
Beiträge: 19
Registriert: Montag 23. März 2020, 20:22

Hallo,
ich bin Python-Neuling und versuche mich an einer menuBar.
Ich finde in allen Beispielen nur Lösungen mit Menüpunkten mit Untermenüs.
Ich möchte aber, dass eine Aktion aus dem Hauptmenü ausgelöste wird.
Klassisches Beispiel ist der Ende-Knopf rechts.

Hier mein Code:

Code: Alles auswählen

import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
from PyQt5.QtGui import QIcon


class Example(QMainWindow):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        
        menubar = self.menuBar()     
        fileMenu = menubar.addMenu('&Datei')  
        exitAct = QAction('&Ende', self) 
        exitAct.triggered.connect(qApp.quit) 
        fileMenu.addAction(exitAct)
        
        # erster Versuch 
        ende_1 = menubar.addMenu('&Ende')  
        ende_1.triggered.connect(qApp.quit)     # läuft ohne Fehler, es passiert nur nichts
        
        # zweiter versuch
        ende_2 = QAction('Ende2', self)
        ende_2.triggered.connect(qApp.quit)
  #      menubar.addMenu(ende_2)              # hier knallt es Fehler: TypeError: arguments did not match any overloaded call:...
 
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Hallo Menu')
        self.show()

def main():
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()
Ich stehe irgenwie auf dem Schlauch....
Benutzeravatar
__blackjack__
User
Beiträge: 13999
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@steenhy: Dabei ist die Lösung soooo nah. Na klar kann man eine `QAction` nicht mit `addMenu()` hinzufügen. Das ist für `QMenu`-Objekte. Sagt der Name ja schon. Du fügst ja etwas weiter oben bereits eine `QAction` zu einem Untermenü hinzu. Da benutzt Du eine andere Methode. Die müsstest Du halt auch auf der Menüleiste benutzt, und schon hast Du was Du haben willst. 😎
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
steenhy
User
Beiträge: 19
Registriert: Montag 23. März 2020, 20:22

na klar....

Code: Alles auswählen

        # zweiter versuch
        ende_2 = QAction('Ende2', self)
        ende_2.triggered.connect(qApp.quit)
        menubar.addAction(ende_2)              # die addAction direkt an die menubar anbauen....
   
Vielen Dank,
Man soll Pfingsten lieber spazieren gehen....
Antworten