4. Gestion des événements
Voyons maintenant la dernière étape que nous avions jusqu'ici laissée de côté : la
gestion des événements. Dans notre application, imaginons – pour l'exemple – que nous
voulons réagir à l'événement "clic sur bouton OK" en affichant le texte saisi dans une
boîte de dialogue (voir Figure 5.6). Pour définir ce comportement dans notre
application PyQt, il faut :
1. définir un slot, c'est-à-dire une méthode susceptible de réagir aux événements ;
2. faire une connexion du signal correspondant à l'événement vers ce slot.
PyQt propose plusieurs approches pour faire cela. Nous allons voir ici les deux plus
simples et les plus pratiquées dans les applications de type Qt Widgets.
4.1. Approche 1 : connexion explicite
Commençons par l'approche la plus traditionnelle, qui consiste à définir explicitement
les connexions signaux-slots. On ajoute la méthode onPushButtonOKClicked, qui est
la méthode "slot", et on ajoute une instruction de connexion signal-slot dans
MainWindowBiblio.__init__, via la méthode connect. En clair, ceci veut dire :
"chaque fois qu'on clique sur le bouton OK, je veux exécuter
onPushButtonOKClicked".
Note > Le code de cet exemple est disponible dans le projet connexion-explicite
.
# main_window_biblio.py
# avec connexion signal-slot explicite
…
from PyQt5.QtWidgets import QMessageBox
class MainWindowBiblio(QMainWindow):
def __init__(self):
… # voir listing plus haut
self.pushButtonOK.clicked.connect(self.onPushButtonOKClicked)
def onPushButtonOKClicked(self):
73
Voyons maintenant la dernière étape que nous avions jusqu'ici laissée de côté : la
gestion des événements. Dans notre application, imaginons – pour l'exemple – que nous
voulons réagir à l'événement "clic sur bouton OK" en affichant le texte saisi dans une
boîte de dialogue (voir Figure 5.6). Pour définir ce comportement dans notre
application PyQt, il faut :
1. définir un slot, c'est-à-dire une méthode susceptible de réagir aux événements ;
2. faire une connexion du signal correspondant à l'événement vers ce slot.
PyQt propose plusieurs approches pour faire cela. Nous allons voir ici les deux plus
simples et les plus pratiquées dans les applications de type Qt Widgets.
4.1. Approche 1 : connexion explicite
Commençons par l'approche la plus traditionnelle, qui consiste à définir explicitement
les connexions signaux-slots. On ajoute la méthode onPushButtonOKClicked, qui est
la méthode "slot", et on ajoute une instruction de connexion signal-slot dans
MainWindowBiblio.__init__, via la méthode connect. En clair, ceci veut dire :
"chaque fois qu'on clique sur le bouton OK, je veux exécuter
onPushButtonOKClicked".
Note > Le code de cet exemple est disponible dans le projet connexion-explicite
.
# main_window_biblio.py
# avec connexion signal-slot explicite
…
from PyQt5.QtWidgets import QMessageBox
class MainWindowBiblio(QMainWindow):
def __init__(self):
… # voir listing plus haut
self.pushButtonOK.clicked.connect(self.onPushButtonOKClicked)
def onPushButtonOKClicked(self):
73
