Tutoriel PyQt5 - Barre de menu
- PyQt5 Ménubar Exemple de base
- Icônes des éléments de menu de la barre de menu PyQt5
- PyQt5 Ménubar élément de menu vérifiable
Une barre de menu se trouve normalement dans le coin supérieur gauche de l’interface graphique et sous la barre de titre. Si l’utilisateur clique sur l’élément du menu, il peut prendre des actions comme ouvrir des fichiers, sauvegarder des fichiers ou quitter l’application.
Nous apprendrons comment lancer une barre de menu, lier l’action au menu, ajouter les raccourcis et afficher le texte d’état.
PyQt5 Ménubar Exemple de base
Nous allons créer notre premier exemple de menubar PyQt5 qui a un menu File
comme dans la plupart des éditeurs. Nous incluons seulement le sous-menu Exit
pour plus de simplicité.
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
a la méthode menuBar()
pour créer la barre de menu.
fileMenu = menubar.addMenu("&File")
fileMenu.addAction(exitAction)
fileMenu
est ajouté à la barre de menu avec le nom File
, et il consiste en une entrée de menu qui s’associe avec l’objet QAction
- exitAction
.
exitAction = QAction("&Exit", self)
exitAction.setShortcut("Ctrl+Q")
exitAction.setStatusTip("Exit application")
exitAction.triggered.connect(qApp.quit)
Il crée l’objet QAction
pour quitter l’application et enregistre cet objet dans la variable exitAction
.
Cet objet QAction
a le nom de &Exit
et est associé au raccourci CTRL+Q.
exitAction.setStatusTip("Exit application")
Il affiche le message supplémentaire dans la barre d’état self.statusBar
lorsque l’utilisateur passe le pointeur de la souris sur cette entrée de menu.
exitAction.triggered.connect(qApp.quit)
Nous connectons l’événement que cette action de sortie est déclenchée au slot de sortie de l’application.
Icônes des éléments de menu de la barre de menu PyQt5
Nous avons deux méthodes pour régler l’icône de l’élément de menu dans la barre de menu de PyQt5.
Pixmap standard dans le style par défaut de PyQt5
Nous pourrions définir l’icône de l’élément de menu avec les icônes standard en utilisant la pixmap standard dans le style par défaut.
self.style().standardIcon(QStyle.SP_DialogCancelButton)
Le code ci-dessus sélectionne l’icône standard de l’annulation du dialogue.
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_())
Utilisez le fichier image avec QIcon
En plus de la méthode ci-dessus pour utiliser les icônes par défaut de QStyle
, nous pourrions aussi utiliser n’importe quel fichier image comme icône en utilisant la classe QIcon
.
QIcon("exit.png")
Elle définit le fichier image exit.png
comme étant l’icône. Le fichier exit.png
devrait être dans le même dossier que le fichier script python.
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 Ménubar élément de menu vérifiable
L’élément de menu vérifiable peut être coché ou décoché et l’état est basculé à chaque fois que l’utilisateur clique dessus.
Nous devons définir le mot-clé argument checkable
comme étant True
pour rendre l’élément de menu vérifiable lorsque nous créons l’objet QAction
.
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)
La propriété checkable
doit être définie à True
pour rendre l’élément de menu vérifiable lorsque nous lançons l’objet QAction
.
Ou nous pourrions utiliser la méthode setCheckable()
après que l’objet soit créé.
self.setCheckable(True)
L’état de l’élément vérifiable est le paramètre de la fonction de rappel. Par conséquent, nous devons le lister dans l’argument lors de la définition de la fonction. Comme
def toggleLabel(self, state):
Le state
est un type booléen, avec la valeur True
quand il est sélectionné et False
quand il n’est pas sélectionné.
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