PyQt/QCheckBox
Description
[modifier | modifier le wikicode]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.
Constructeur
[modifier | modifier le wikicode]# Constructeurs pour la classe QCheckBox
QCheckBox ( QWidget parent, str name = "" )
QCheckBox ( Qstr text, QWidget parent, str name = "" )
Exemple
[modifier | modifier le wikicode]
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)
|