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