# PyQt/QPushButton
## Description

La classe QPushButton met à disposition un bouton de commande. C'est certainement l'un des éléments graphiques le plus utilisé dans une interface pour réaliser des actions de la part de l'utilisateur.
Cet élément permet d'afficher du texte ou une image, ainsi qu'optionnellement une petite icône. Le texte peut afficher la touche accélératrice grâce à l'utilisation du caractère & devant la lettre symbolisant la touche. Toutes ces propriétés peuvent soit être mises en place grâce au constructeur de la classe, soit par l'intermédiaire d'appel à des méthodes sur l'objet. Il est aussi possible de désactiver le bouton. L'utilisateur ne pourra alors plus cliquer dessus, et l'aspect graphique du bouton sera tel que l'utilisateur est informé de la non-activation du bouton (généralement le texte du bouton est grisé, mais cela dépend du système de fenêtrage utilisé).
Un bouton poussoir émet le signal clicked) quand il est activé par un clic de la souris ou bien par le clavier. Mais les boutons mettent aussi à disposition les signaux pressed (pressé) et released (relaché), qui sont nettement moins utilisés en pratique.
Les boutons contenus dans des boîtes de dialogue sont définis comme boutons par défaut, à savoir qu'ils obtiennent automatiquement le focus clavier lors de l'ouverture de la boîte de dialogue. L'utilisateur n'a alors qu'à presser sur « Entrée » pour activer le bouton. Ce comportement est modifiable par la méthode setAutoDefault. Il est aussi possible de modifier le comportement du bouton pour qu'il reste activé lorsque l'utilisateur clique dessus. Ce comportement est mis en place grâce à la méthode setToggleButton. Il est aussi possible de faire en sorte que le bouton répète son action tant que l'utilisateur le maintient cliqué ou activé par le clavier. Pour cela nous vous laissons consulter la documentation de référence de la classe.
Une variante d'un bouton de commande est un bouton menu. Il met alors à disposition plusieurs actions, qui sont choisies grâce à un menu déroulant affiché lorsque l'utilisateur clique sur le bouton. La méthode setPopup) permet d'associer un menu déroulant à un bouton. Pour la création d'un menu déroulant, référez-vous à la section parlant de la classe QPopupMenu.

## Exemple

* PyQt3.*
* #!/usr/bin/python
* # -*- coding : utf-8 -*-
* # qpushbutton.py
* # Programme exemple pour la classe QPushButton
* from qt import *
* import sys
* class Demo(QApplication) :
* def init (self, args) :
* QApplication. init (self,args)
* # widget principal, il s'agit d'une fenêtre de dialogue
* self.dialog = QDialog(None, "Dialog")
* # Astuce : on peut grouper les boutons grâce à un
* # QButtonGroup ; positionnement horizontal des boutons
* self.group1=QButtonGroup(1, Qt.Horizontal, None, "group1")
* self.group1.setTitle("Essai QPushButton")
* # définition de 3 boutons
* # NOTE : le widget QButtonGroup se redimensionne automatiquement
* # NOTE 2 : & permet de définir la touche accélératrice (Alt+B pour
* # le premier bouton)
* self.push1=QPushButton("&Bouton 1", self.group1, "push1")
* self.push2=QPushButton("Bou&ton 2", self.group1, "push2")
* self.push3=QPushButton("Bouton &3", self.group1, "push3")
* # le bouton push1 est de type ”toggle”
* self.push1.setToggleButton(True)
* # le bouton push2 est un bouton menu
* self.menu = QPopupMenu(None, "menu1")
* self.menu.insertItem("Menu 1")
* self.menu.insertItem("Menu 2")
* self.push2.setPopup(self.menu)
* # le bouton push3 n'est pas modifiable
* self.push3.setDisabled(True)
* # espace entre les boutons
* self.group1.addSpace(3)
* self.group1.show
* self.connect(self,SIGNAL("lastWindowClosed"),self,SLOT("quit"))
* self.exec loop
* if name == "__main__" :
* app=Demo(sys.argv)
* PyQt4.*
* #!/usr/bin/python
* # -*- coding : utf-8 -*-
* # qpushbox.py
* # Programme exemple pour la classe QpushBox#
* from PyQt4.QtGui import *
* from PyQt4.QtCore import *
* import sys
* class Demo(QApplication) :
* def __init__(self, args) :
* QApplication.__init__(self,args)
* # widget principal, il s'agit d'une fenêtre de dialogue
* self.dialog = QDialog
* self.dialog.setWindowTitle("Dialog")
* #Astuce : on peut grouper les boutons grâce à un
* # QGroupBox
* self.group1=QGroupBox("Essai QpushBox", self.dialog)
* self.group1.setObjectName("group1")
* # NOTE : le widget Q3ButtonGroup se redimensionne automatiquement
* self.push1=QPushButton("push 1")
* self.push2=QPushButton("push 2")
* self.push3=QPushButton("push 3")
* # le bouton push3 n'est pas modifiable
* self.push3.setDisabled(True) ;
* # espace entre les boutons
* self.vbox = QVBoxLayout
* self.vbox.addWidget(self.push1)
* self.vbox.addWidget(self.push2)
* self.vbox.addWidget(self.push3)
* self.vbox.addStretch(1)
* self.group1.setLayout(self.vbox)
* self.vbox2 = QVBoxLayout
* self.vbox2.addWidget(self.group1)
* self.dialog.setLayout(self.vbox2)
* self.dialog.show
* self.connect(self,SIGNAL("lastWindowClosed"),self,SLOT("quit"))
* self.exec_
* if __name__ == "__main__" :
* app=Demo(sys.argv)