PyQt - Widget QRadioButton

UNE QRadioButtonobjet de classe présente un bouton sélectionnable avec une étiquette de texte. L'utilisateur peut sélectionner l'une des nombreuses options présentées sur le formulaire. Cette classe est dérivée de la classe QAbstractButton.

Les boutons radio sont auto-exclusifs par défaut. Par conséquent, un seul des boutons radio de la fenêtre parent peut être sélectionné à la fois. Si l'un d'entre eux est sélectionné, le bouton précédemment sélectionné est automatiquement désélectionné. Les boutons radio peuvent également être placés dans unQGroupBox ou QButtonGroup pour créer plusieurs champs sélectionnables dans la fenêtre parente.

Les méthodes répertoriées suivantes de la classe QRadioButton sont les plus couramment utilisées.

Sr.No. Méthodes et description
1

setChecked()

Modifie l'état du bouton radio

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é

Le signal par défaut associé à l'objet QRadioButton est toggled (), bien que d'autres signaux hérités de la classe QAbstractButton puissent également être implémentés.

Exemple

Ici, deux boutons radio mutuellement exclusifs sont construits sur une fenêtre de niveau supérieur.

L'état par défaut de b1 est défini sur vérifié par l'instruction -

Self.b1.setChecked(True)

Le signal toggled () des deux boutons est connecté à la fonction btnstate (). L'utilisation de lambda permet à la source du signal d'être transmise à la fonction en tant qu'argument.

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

La fonction btnstate () vérifie l'état du bouton émettant le signal toggled ().

if b.isChecked() == True:
      print b.text()+" is selected"
   else:
      print b.text()+" is deselected"
		
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class Radiodemo(QWidget):

   def __init__(self, parent = None):
      super(Radiodemo, self).__init__(parent)
		
      layout = QHBoxLayout()
      self.b1 = QRadioButton("Button1")
      self.b1.setChecked(True)
      self.b1.toggled.connect(lambda:self.btnstate(self.b1))
      layout.addWidget(self.b1)
		
      self.b2 = QRadioButton("Button2")
      self.b2.toggled.connect(lambda:self.btnstate(self.b2))

      layout.addWidget(self.b2)
      self.setLayout(layout)
      self.setWindowTitle("RadioButton 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 = Radiodemo()
   ex.show()
   sys.exit(app.exec_())
	
if __name__ == '__main__':
   main()

Le code ci-dessus produit la sortie suivante -

Button1 is deselected
Button2 is selected
Button2 is deselected
Button1 is selected