PyQt - QRadioButton Widget

UN QRadioButtonL'oggetto classe presenta un pulsante selezionabile con un'etichetta di testo. L'utente può selezionare una delle molte opzioni presentate nel modulo. Questa classe è derivata dalla classe QAbstractButton.

I pulsanti di opzione sono autoesclusivi per impostazione predefinita. Pertanto, è possibile selezionare solo uno dei pulsanti di opzione nella finestra principale alla volta. Se ne viene selezionato uno, il pulsante selezionato in precedenza viene automaticamente deselezionato. I pulsanti di opzione possono anche essere inseriti in un fileQGroupBox o QButtonGroup per creare più di un campo selezionabile nella finestra principale.

I metodi elencati di seguito della classe QRadioButton sono quelli più comunemente usati.

Sr.No. Metodi e descrizione
1

setChecked()

Modifica lo stato del pulsante di opzione

2

setText()

Imposta l'etichetta associata al pulsante

3

text()

Recupera la didascalia del pulsante

4

isChecked()

Controlla se il pulsante è selezionato

Il segnale predefinito associato all'oggetto QRadioButton è toggled (), sebbene possano essere implementati anche altri segnali ereditati dalla classe QAbstractButton.

Esempio

Qui due pulsanti di opzione che si escludono a vicenda sono costruiti su una finestra di primo livello.

Lo stato predefinito di b1 è impostato su verificato dall'istruzione -

Self.b1.setChecked(True)

Il segnale alternato () di entrambi i pulsanti è collegato alla funzione btnstate (). L'uso di lambda consente di passare la sorgente del segnale alla funzione come argomento.

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

La funzione btnstate () controlla lo stato del pulsante che emette il segnale 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()

Il codice precedente produce il seguente output:

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