1. Description de la classe QPushButton
La classe QPushButton de PyQt5 représente un élément interactif sous forme de bouton au sein d'une interface utilisateur. Ce bouton peut être activé par l'utilisateur pour déclencher une action spécifique.
- En héritant de la classe QAbstractButton, la classe QPushButton hérite de toutes les propriétés et méthodes de cette classe tout en ajoutant des fonctionnalités spécifiques à QPushButton.
- L'utilisation de la méthode setText() permet de définir le texte affiché sur le bouton, tandis que setIcon() permet de spécifier une icône associée. Pour une interaction plus informative, setToolTip() peut être utilisé pour définir le texte de l'info-bulle qui s'affiche lorsque l'utilisateur survole le bouton.
- La méthode setShortcut() offre la possibilité de définir un raccourci clavier pour déclencher l'action associée au bouton.
- Un bouton QPushButton peut également être associé à un menu en utilisant setMenu(). Ce menu peut être déclenché soit en cliquant sur le bouton, soit en utilisant un raccourci clavier spécifique lié au menu.
- L'utilisation de setDefault() permet de déterminer si le bouton doit être le bouton par défaut de la fenêtre parente. Lorsque ce bouton est enfoncé, il peut être déclenché en appuyant sur la touche "Entrée" ou "Espace". setAutoDefault() permet, quant à elle, d'activer automatiquement le bouton lorsque la fenêtre parente obtient le focus.
- Des méthodes comme click() et animateClick() peuvent être utilisées pour simuler manuellement un clic sur le bouton, avec animateClick() déclenchant une animation de clic.
- En termes d'interaction, la classe QPushButton émet différents signaux tels que clicked() lorsqu'un clic est effectué, pressed() lorsqu'il est enfoncé, et released() lorsqu'il est relâché. Ces signaux offrent la possibilité de réagir à divers événements associés au bouton.
2. Créer un Bouton PyQt5 avec la classe QPusButton
Pour créer un bouton de commande du type QPusButton, il suffit d'instancier la classe QPusButton:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton app = QApplication(sys.argv) win = QWidget() win.setGeometry(100 , 100 , 500 , 300) # create a QPusButton q_btn = QPushButton(win) q_btn.setText("This is a QPusButton ! ") q_btn.setGeometry(100 , 100 , 200 , 50) win.show() app.exec_() |
3. Associer une action à un bouton QPushButton PyQt5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton # create a button action def action(): print("Why you clicked the button !") app = QApplication(sys.argv) win = QWidget() win.setGeometry(100 , 100 , 500 , 300) # create a QPusButton q_btn = QPushButton(win) q_btn.setText("This is a QPusButton ! ") q_btn.setGeometry(100 , 100 , 200 , 50) # bind an action to the button q_btn.clicked.connect(action) win.show() app.exec_() # Output: Why you clicked the button ! |
Ce qui affiche à l'écran une fenêtre avec un bouton de commande et en cliquant sur ce dernier, on aperçoit l'affichage à l'écran du message:
Why you clicked the button !
4. QPushButton PyQt5 selon l'approche objet Python
4.1 Créer un QPushButton selon l'approche objet Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton class WindowQPush(QWidget): def __init__(self): super().__init__() def build(self): # Configuration de la fenêtre self.setWindowTitle("Window With QPushButton!") self.setGeometry(100, 100, 450, 200) # Création d'un bouton QPushButton self.q_btn = QPushButton(self) self.q_btn.setText("This is a QPushButton from object approach!") # Définition de la position et de la taille du bouton self.q_btn.setGeometry(50, 50, 350, 35) if __name__ == "__main__": # Initialisation de l'application PyQt app = QApplication(sys.argv) # Création d'une instance de la classe WindowQPush QPushExample = WindowQPush() # Construction de la fenêtre avec le bouton QPushExample.build() # Affichage de la fenêtre QPushExample.show() # Lancement de l'application sys.exit(app.exec_()) |
4.2 Associer une action à un QPushButton selon l'approche objet Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton class WindowQPush(QWidget): def __init__(self): super().__init__() # Créer une action pour le bouton de commande def action(self): print("You have clicked on the button !") def build(self): # Configuration de la fenêtre self.setWindowTitle("Window With QPushButton!") self.setGeometry(100, 100, 450, 200) # Création d'un bouton QPushButton self.q_btn = QPushButton(self) self.q_btn.setText("This is a QPushButton from object approach!") self.q_btn.setStyleSheet("font-size: 16px;") # Ajout d'une feuille de style pour définir la taille de la police # lier l'action au bouton de commande: self.q_btn.clicked.connect(self.action) # Définition de la position et de la taille du bouton self.q_btn.setGeometry(50, 50, 350, 35) if __name__ == "__main__": # Initialisation de l'application PyQt app = QApplication(sys.argv) # Création d'une instance de la classe WindowQPush QPushExample = WindowQPush() # Construction de la fenêtre avec le bouton QPushExample.build() # Affichage de la fenêtre QPushExample.show() # Lancement de l'application sys.exit(app.exec_()) |
5. Liste des principales méthodes associées à un objet 'QPushButton' PyQt5
Voici une compilation non exhaustive des principales méthodes liées à un objet QPushButton en PyQt5, classées par ordre alphabétique :
- animateClick(): Déclenche une animation simulant un clic sur le bouton.
- click(): Génère un signal clicked pour notifier qu'un clic a été effectué sur le bouton.
- defaultAction(): Renvoie l'action par défaut associée au bouton.
- hasDefault(): Retourne True si le bouton possède une action par défaut, False sinon.
- icon(): Renvoie l'icône actuellement affichée sur le bouton.
- isCheckable(): Indique si le bouton est de type "bouton à bascule" (toggle button) en retournant True, sinon False.
- isChecked(): Renvoie True si le bouton de type "bouton à bascule" est actuellement enfoncé, sinon False.
- menu(): Renvoie le menu associé au bouton.
- setAutoDefault(): Configure si le bouton doit automatiquement devenir le bouton par défaut de la fenêtre parente lorsqu'il obtient le focus (True) ou non (False).
- setDefault(): Définit si le bouton est le bouton par défaut de la fenêtre parente (True) ou non (False).
- setFlat(): Détermine si le bouton est un bouton plat (True) ou non (False).
- setIcon(): Spécifie l'icône à afficher sur le bouton.
- setMenu(): Associe un menu au bouton.
- setShortcut(): Définit le raccourci clavier associé au bouton.
- setText(): Fixe le texte à afficher sur le bouton.
- setToolTip(): Définit le texte de l'infobulle associée au bouton.
- showMenu(): Affiche le menu associé au bouton.
- text(): Récupère le texte actuellement affiché sur le bouton.
- toggle(): Inverse l'état du bouton de type "bouton à bascule".
6. Quiz
a) triggerClick()
b) simulateClick()
c) animateClick()
d) clickAnimation()
a) setCaption()
b) setText()
c) setLabel()
d) setTitle()
a) isPressed()
b) isChecked()
c) isToggled()
d) isActivated()
a) setIconImage()
b) setImageIcon()
c) setIcon()
d) setButtonIcon()
a) assignMenu()
b) setContextMenu()
c) attachMenu()
d) setMenu()
a) setShortcutKey()
b) assignShortcut()
c) setHotkey()
d) setShortcut()
a) hasAction()
b) isDefault()
c) hasDefaultAction()
d) defaultCheck()
a) setFocusOnDefault()
b) setDefaultFocus()
c) setAutoDefault()
d) enableOnFocus()
a) triggerClick()
b) simulateClick()
c) manualClick()
d) click()
a) getCurrentText()
b) text()
c) retrieveText()
d) displayText()
- Exercice 1 : c) animateClick()
- Exercice 2 : b) setText()
- Exercice 3 : b) isChecked()
- Exercice 4 : c) setIcon()
- Exercice 5 : d) setMenu()
- Exercice 6 : d) setShortcut()
- Exercice 7 : c) hasDefaultAction()
- Exercice 8 : c) setAutoDefault()
- Exercice 9 : d) click()
- Exercice10 : b) text()
Younes Derfoufi
CRMEF OUJDA