PyQt - Widget QCheckBox

Une zone rectangulaire avant le libellé de texte apparaît lorsqu'un QCheckBoxl'objet est ajouté à la fenêtre parente. Tout comme QRadioButton, il s'agit également d'un bouton sélectionnable. Son utilisation courante est dans un scénario où l'utilisateur est invité à choisir une ou plusieurs des options disponibles.

Contrairement aux boutons radio, les cases à cocher ne sont pas mutuellement exclusives par défaut. Afin de limiter le choix à l'un des éléments disponibles, les cases à cocher doivent être ajoutées à QButtonGroup.

Le tableau suivant répertorie les méthodes de classe QCheckBox couramment utilisées -

Sr.No. Méthodes et description
1

setChecked()

Modifie l'état du bouton de la case à cocher

2

setText()

Définit le libellé associé au bouton

3

text()

Récupère la légende du bouton

4

isChecked()

Vérifie si le bouton est sélectionné

5

setTriState()

Ne fournit aucun état de changement à la case à cocher

Chaque fois qu'une case est cochée ou désactivée, l'objet émet le signal stateChanged ().

Exemple

Ici, deux objets QCheckBox sont ajoutés à une disposition horizontale. Leur signal stateChanged () est connecté à la fonction btnstate (). L'objet source du signal est passé à la fonction à l'aide de lambda.

self.b1.stateChanged.connect(lambda:self.btnstate(self.b1))
self.b2.toggled.connect(lambda:self.btnstate(self.b2))

La fonction isChecked () permet de vérifier si le bouton est coché ou non.

if b.text() == "Button1":
   if b.isChecked() == True:
      print b.text()+" is selected"
   else:
      print b.text()+" is deselected"

Le code complet est le suivant -

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class checkdemo(QWidget):
   def __init__(self, parent = None):
      super(checkdemo, self).__init__(parent)
      
      layout = QHBoxLayout()
      self.b1 = QCheckBox("Button1")
      self.b1.setChecked(True)
      self.b1.stateChanged.connect(lambda:self.btnstate(self.b1))
      layout.addWidget(self.b1)
		
      self.b2 = QCheckBox("Button2")
      self.b2.toggled.connect(lambda:self.btnstate(self.b2))

      layout.addWidget(self.b2)
      self.setLayout(layout)
      self.setWindowTitle("checkbox demo")

   def btnstate(self,b):
      if b.text() == "Button1":
         if b.isChecked() == True:
            print b.text()+" is selected"
         else:
            print b.text()+" is deselected"
				
      if b.text() == "Button2":
         if b.isChecked() == True:
            print b.text()+" is selected"
         else:
            print b.text()+" is deselected"
				
def main():

   app = QApplication(sys.argv)
   ex = checkdemo()
   ex.show()
   sys.exit(app.exec_())
	
if __name__ == '__main__':
   main()

Comme mentionné précédemment, les boutons checkBox peuvent être rendus mutuellement exclusifs en les ajoutant dans l'objet QButtonGroup.

self.bg = QButtonGroup()
self.bg.addButton(self.b1,1)
self.bg.addButton(self.b2,2)

Objet QButtonGroup, fournit un conteneur abstrait pour les boutons et n'a pas de représentation visuelle. Il émet le signal buttonCliked () et envoie la référence de l'objet Button à la fonction slot btngroup ().

self.bg.buttonClicked[QAbstractButton].connect(self.btngroup)

La fonction btngroup () affiche la légende de la case à cocher cliquée.

def btngroup(self,btn):
   print btn.text()+" is selected"