PyQt5-Tutorial - Menüleiste
- PyQt5 Menüleiste Einfaches Beispiel
- PyQt5-Menüpunkt-Symbole in der Menüleiste
- PyQt5 prüfbarer Menüpunkt in der Menüleiste
Eine Menüleiste befindet sich normalerweise in der linken oberen Ecke der GUI und unter der Titelleiste. Wenn der Benutzer auf den Eintrag im Menü klickt, kann er Aktionen wie das Öffnen von Dateien, das Speichern von Dateien oder das Beenden der Anwendung ausführen.
Wir werden lernen, wie man eine Menüleiste initiiert, die Aktion an das Menü bindet, die Verknüpfungen hinzufügt und den Statustext anzeigt.
PyQt5 Menüleiste Einfaches Beispiel
Wir werden unser erstes PyQt5-Menübar-Beispiel erstellen, das wie in den meisten Editoren das Menü File
hat. Der Einfachheit halber fügen wir nur das Untermenü Exit
ein.
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication
class basicMenubar(QMainWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.initUI()
def initUI(self):
self.setGeometry(200, 200, 200, 200)
exitAction = QAction("&Exit", self)
exitAction.setShortcut("Ctrl+Q")
exitAction.setStatusTip("Exit application")
exitAction.triggered.connect(qApp.quit)
self.statusBar()
menubar = self.menuBar()
fileMenu = menubar.addMenu("&File")
fileMenu.addAction(exitAction)
self.setWindowTitle("PyQt5 Basic Menubar")
self.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = basicMenubar()
sys.exit(app.exec_())
menubar = self.menuBar()
QMainWindow
hat die Methode menuBar()
, um die Menüleiste zu erstellen.
fileMenu = menubar.addMenu("&File")
fileMenu.addAction(exitAction)
fileMenu
wird der Menüleiste unter dem Namen File
hinzugefügt und besteht aus einem Menüeintrag, der mit dem Objekt QAction
assoziiert wird - exitAction
.
exitAction = QAction("&Exit", self)
exitAction.setShortcut("Ctrl+Q")
exitAction.setStatusTip("Exit application")
exitAction.triggered.connect(qApp.quit)
Es erzeugt das Objekt QAction
, um die Anwendung zu beenden, und speichert dieses Objekt in der Variablen exitAction
.
Dieses QAction
-Objekt hat den Namen &Exit
und ist mit der Abkürzung CTRL+Q verknüpft.
exitAction.setStatusTip("Exit application")
Es zeigt die zusätzliche Meldung in der Statusleiste self.statusBar
an, wenn der Benutzer mit dem Mauszeiger über diesen Menüeintrag fährt.
exitAction.triggered.connect(qApp.quit)
Wir verbinden das Ereignis, dass diese Exit-Aktion ausgelöst wird, mit dem Quit-Slot der Anwendung.
PyQt5-Menüpunkt-Symbole in der Menüleiste
Wir haben zwei Methoden, um das Symbol des Menüpunkts in der PyQt5-Menüleiste zu setzen.
Standard-Pixmap im PyQt5-Standardstil
Wir könnten das Menüpunktsymbol mit den Standardsymbolen einstellen, indem wir die Standard-Pixmap im Standardstil verwenden.
self.style().standardIcon(QStyle.SP_DialogCancelButton)
Der obige Code wählt das Standardsymbol für Dialogabbruch aus.
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication, QStyle
class basicMenubar(QMainWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.initUI()
def initUI(self):
self.setGeometry(200, 200, 200, 200)
exitAction = QAction(
self.style().standardIcon(QStyle.SP_DialogCancelButton), "&Exit", self
)
exitAction.setShortcut("Ctrl+Q")
exitAction.setStatusTip("Exit application")
exitAction.triggered.connect(qApp.quit)
self.statusBar()
menubar = self.menuBar()
fileMenu = menubar.addMenu("&File")
fileMenu.addAction(exitAction)
self.setWindowTitle("PyQt5 Basic Menubar")
self.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = basicMenubar()
sys.exit(app.exec_())
Bilddatei mit QIcon
verwenden
Neben der obigen Methode, die Standard-Icons von QStyle
zu verwenden, könnten wir auch eine beliebige Bilddatei als Icon verwenden, indem wir die Klasse QIcon
verwenden.
QIcon("exit.png")
Sie setzt die Bilddatei exit.png
als Icon. Die Datei exit.png
sollte sich im gleichen Ordner wie die Python-Skript-Datei befinden.
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication, QStyle
from PyQt5.QtGui import QIcon
class basicMenubar(QMainWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.initUI()
def initUI(self):
self.setGeometry(200, 200, 200, 200)
exitAction = QAction(QIcon("exit.png"), "&Exit", self)
exitAction.setShortcut("Ctrl+Q")
exitAction.setStatusTip("Exit application")
exitAction.triggered.connect(qApp.quit)
self.statusBar()
menubar = self.menuBar()
fileMenu = menubar.addMenu("&File")
fileMenu.addAction(exitAction)
self.setWindowTitle("PyQt5 Basic Menubar")
self.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = basicMenubar()
sys.exit(app.exec_())
PyQt5 prüfbarer Menüpunkt in der Menüleiste
Ein überprüfbarer Menüpunkt kann aktiviert oder deaktiviert werden, und der Status wird jedes Mal umgeschaltet, wenn der Benutzer ihn anklickt.
Wir müssen das Schlüsselwortargument checkable
auf True
setzen, um den Menüpunkt prüfbar zu machen, wenn wir das Objekt QAction
erstellen.
import sys
from PyQt5.QtWidgets import QMainWindow, QAction, qApp, QApplication, QLabel
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt
class basicMenubar(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.setGeometry(200, 200, 200, 200)
self.label = QLabel("The toggle state is ")
self.label.setAlignment(Qt.AlignCenter)
self.setCentralWidget(self.label)
toggleAction = QAction("&Toggle Label", self, checkable=True)
toggleAction.setStatusTip("Toggle the label")
toggleAction.triggered.connect(self.toggleLabel)
exitAction = QAction(QIcon("exit.png"), "&Exit", self)
exitAction.setShortcut("Ctrl+Q")
exitAction.setStatusTip("Exit application")
exitAction.triggered.connect(qApp.quit)
self.statusBar()
menubar = self.menuBar()
fileMenu = menubar.addMenu("&File")
fileMenu.addAction(toggleAction)
fileMenu.addAction(exitAction)
self.setWindowTitle("PyQt5 Basic Menubar")
self.show()
def toggleLabel(self, state):
self.label.setText("The toggle state is {}".format(state))
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = basicMenubar()
sys.exit(app.exec_())
toggleAction = QAction("&Toggle Label", self, checkable=True)
Die Eigenschaft checkable
sollte auf True
gesetzt werden, um den Menüpunkt prüfbar zu machen, wenn wir das Objekt QAction
initiieren.
Oder wir könnten die Methode setCheckable()
verwenden, nachdem das Objekt erzeugt wurde.
self.setCheckable(True)
Der Status des prüfbaren Elements ist der Parameter für die Callback-Funktion. Daher sollten wir ihn bei der Definition der Funktion im Argument auflisten. Wie,
def toggleLabel(self, state):
Der state
ist ein boolescher Typ, mit dem Wert als True
, wenn ausgewählt und als False
, wenn nicht ausgewählt.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook