PyQt5 Tutorial - MenuBar
- Esempio di base della barra dei menu PyQt5
- PyQt5 Menubar Voce di menu Icone
- PyQt5 Menubar Voce di menu controllabile
Una barra dei menu si trova normalmente nell’angolo in alto a sinistra della GUI e sotto la barra del titolo. Se l’utente fa clic sulla voce del menu, può intraprendere azioni come l’apertura di file, il salvataggio di file o l’uscita dall’applicazione.
Impareremo come avviare una barra di menu, legare l’azione al menu, aggiungere le scorciatoie e mostrare il testo di stato.
Esempio di base della barra dei menu PyQt5
Creeremo il nostro primo esempio di menubar PyQt5 che ha il menu File
come nella maggior parte degli editor. Includiamo solo il sotto-menu Exit
per semplicità.
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
ha il metodo menuBar()
per creare la barra dei menu.
fileMenu = menubar.addMenu("&File")
fileMenu.addAction(exitAction)
fileMenu
viene aggiunto alla barra dei menu con il nome File
, e consiste in una voce di menu che si associa all’oggetto QAction
- exitAction
.
exitAction = QAction("&Exit", self)
exitAction.setShortcut("Ctrl+Q")
exitAction.setStatusTip("Exit application")
exitAction.triggered.connect(qApp.quit)
Crea l’oggetto QAction
per uscire dall’applicazione e salva questo oggetto nella variabile exitAction
.
Questo oggetto QAction
ha il nome &Exit
ed è associato alla scorciatoia CTRL+Q.
exitAction.setStatusTip("Exit application")
Mostra il messaggio extra nella barra di stato self.statusBar
quando l’utente passa il puntatore del mouse su questa voce di menu.
exitAction.triggered.connect(qApp.quit)
Colleghiamo l’evento che questa azione di uscita viene attivata allo slot di uscita dell’applicazione.
PyQt5 Menubar Voce di menu Icone
Abbiamo due metodi per impostare l’icona della voce di menu nella barra dei menu di PyQt5.
Pixmap standard nello stile predefinito di PyQt5
Potremmo impostare l’icona della voce di menu con le icone standard utilizzando la pixmap standard nello stile predefinito.
self.style().standardIcon(QStyle.SP_DialogCancelButton)
Il codice di cui sopra seleziona l’icona standard di cancellazione della finestra di dialogo.
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_())
Utilizzare il file immagine con QIcon
Oltre al metodo di cui sopra per usare le icone predefinite di QStyle
, potremmo anche usare qualsiasi file immagine come icona usando la classe QIcon
.
QIcon("exit.png")
Essa imposta il file immagine exit.png
come icona. Il file exit.png
dovrebbe essere nella stessa cartella del file 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 Menubar Voce di menu controllabile
La voce di menu controllabile può essere controllata o deselezionata e lo stato viene commutato ogni volta che l’utente fa clic su di essa.
Dobbiamo impostare l’argomento della parola chiave checkable
in modo che sia True
per rendere la voce di menu controllabile quando creiamo l’oggetto 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 proprietà checkable
dovrebbe essere impostata su True
per rendere la voce di menu controllabile quando iniziamo l’oggetto QAction
.
Oppure potremmo usare il metodo setCheckable()
dopo che l’oggetto è stato creato.
self.setCheckable(True)
Lo stato dell’elemento controllabile è il parametro della funzione di richiamo. Pertanto, dovremmo elencarlo nell’argomento quando si definisce la funzione. Come
def toggleLabel(self, state):
Lo state
è di tipo booleano, con il valore come True
quando è selezionato e False
quando non è selezionato.
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