# PyQt/QCheckBox
## Description

La classe QCheckBox permet de mettre en place une case à cocher avec soit un label textuel soit une image (pixmap) à côté. Le label textuel peut être paramétré par le constructeur et par un appel à la méthode setText, tandis que l'image peut être ajoutée par setPixmap. Cette case peut avoir deux états, soit coché (checked), soit décoché (unchecked). Le changement d'état peut être récupéré avec le signal toggled, tandis qu'il est possible de récupérer l'état de la case avec la méthode isChecked.
En plus des deux états standards de ce type d'élément, Qt met à disposition un troisième état, appelé « no change ». Cet état est activable grâce à la méthode setTristate. Cet état, que l'on peut traduire par « état de non changement », permet à l'utilisateur d'indiquer par exemple dans une fenêtre de configuration que la valeur stockée ne doit pas être modifiée. Néanmoins, cette fonctionnalité est très peu souvent utilisée, certainement car elle est difficilement compréhensible pour un utilisateur novice, et que l'on préfère mettre l'état de la case à coché si la valeur précédente l'était déjà. Il est possible de regrouper plusieurs boutons en utilisant la classe QButtonGroup.

## Exemple

* PyQt3.*
* #!/usr/bin/python
* # -*- coding : utf-8 -*-
* # qcheckbox.py
* # Programme exemple pour la classe QCheckBox#
* 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 QCheckBox")
* # définition de 3 checkboxes
* # NOTE : le widget QButtonGroup se redimensionne automatiquement
* self.check1=QCheckBox("checkbox 1", self.group1, "check1")
* self.check2=QCheckBox("checkbox 2", self.group1, "check2")
* self.check3=QCheckBox("checkbox 3", self.group1, "check3")
* # le bouton check1 est de type ”tristate”
* self.check1.setTristate
* # le bouton check2 est par défaut coché
* self.check2.setChecked(True) ;
* # le bouton check3 n'est pas modifiable
* self.check3.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 -*-
* # qcheckbox.py
* # Programme exemple pour la classe QCheckBox#
* 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 QCheckBox", self.dialog)
* self.group1.setObjectName("group1")
* # définition de 3 checkboxes
* self.check1=QCheckBox("checkbox 1")
* self.check2=QCheckBox("checkbox 2")
* self.check3=QCheckBox("checkbox 3")
* # le bouton check1 est de type ”tristate”
* self.check1.setTristate
* # le bouton check2 est par défaut coché
* self.check2.setChecked(True) ;
* # le bouton check3 n'est pas modifiable
* self.check3.setDisabled(True) ;
* # Layout vertical pour les checkboxes
* self.vbox = QVBoxLayout
* self.vbox.addWidget(self.check1)
* self.vbox.addWidget(self.check2)
* self.vbox.addWidget(self.check3)
* self.vbox.addStretch(1)
* self.group1.setLayout(self.vbox)
* # Layout pour le groupe
* self.vbox2 = QVBoxLayout
* self.vbox2.addWidget(self.group1)
* self.dialog.setLayout(self.vbox2)
* # afficher
* self.dialog.show
* self.connect(self,SIGNAL("lastWindowClosed"),self,SLOT("quit"))
* self.exec_
* if __name__ == "__main__" :
* app=Demo(sys.argv)