PyQt5 Tutorial - Radiobutton
-
PyQt5
QRadiobutton
Esempio di base -
PyQt5
QRadiobutton
setChecked
MetodosetChecked
-
PyQt5
QRadiobutton
Group
QRadiobutton
è simile al QCheckbox
, tranne per il fatto che si ha più di una scelta, ma è possibile selezionarne solo una alla volta. Il widget QRadiobutton
ha anche l’etichetta di testo insieme al pulsante radio rotondo.
PyQt5 QRadiobutton
Esempio di base
Il codice sottostante chiede in quale città si vive e crea due pulsanti radio che l’utente può scegliere. Mostra il testo in label dopo che l’utente ha selezionato uno dei pulsanti di opzione.
import sys
from PyQt5.QtWidgets import (
QLabel,
QRadioButton,
QPushButton,
QVBoxLayout,
QApplication,
QWidget,
)
class basicRadiobuttonExample(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.label = QLabel("Which city do you live in?")
self.rbtn1 = QRadioButton("New York")
self.rbtn2 = QRadioButton("Houston")
self.label2 = QLabel("")
self.rbtn1.toggled.connect(self.onClicked)
self.rbtn2.toggled.connect(self.onClicked)
layout = QVBoxLayout()
layout.addWidget(self.label)
layout.addWidget(self.rbtn1)
layout.addWidget(self.rbtn2)
layout.addWidget(self.label2)
self.setGeometry(200, 200, 300, 150)
self.setLayout(layout)
self.setWindowTitle("PyQt5 Radio Button Example")
self.show()
def onClicked(self):
radioBtn = self.sender()
if radioBtn.isChecked():
self.label2.setText("You live in " + radioBtn.text())
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = basicRadiobuttonExample()
sys.exit(app.exec_())
self.rbtn1 = QRadioButton("New York")
self.rbtn2 = QRadioButton("Houston")
Creiamo due pulsanti radio rbtn1
e rbtn2
. La stringa tra parentesi è l’etichetta di testo mostrata accanto al radio button rotondo.
self.rbtn1.toggled.connect(self.onClicked)
self.rbtn2.toggled.connect(self.onClicked)
Il pulsante emette il segnale toggled
ogni volta che il pulsante viene selezionato o deselezionato. La funzione onClicked
è collegata al segnale toggled
di due radio button.
def onClicked(self):
radioBtn = self.sender()
if radioBtn.isChecked():
self.label2.setText("You live in " + radioBtn.text())
self.sender()
restituisce il widget che emette il segnale e il metodo isChecked()
nel widget QRadiobutton
è True
se quello specifico pulsante è selezionato, altrimenti restituisce False
.
Potremmo ottenere il particolare radio button selezionato dal gruppo di radio button controllando il metodo isChecked()
.
PyQt5 QRadiobutton
setChecked
Metodo setChecked
Il QRadiobutton
non viene controllato di default dopo che è stato avviato. Potremmo cambiare il default dello stato del radio button da Checked
durante l’inizializzazione usando il metodo setChecked()
.
Per esempio, aggiungiamo la riga sottostante ai codici di esempio sopra riportati per controllare il radio button New York
.
self.rbtn1.setChecked(True)
PyQt5 QRadiobutton
Group
Tutti i pulsanti radio nella stessa finestra genitore sono all’interno dello stesso gruppo e ciò significa che si può selezionare un solo pulsante radio alla volta anche i segnali toggled
sono collegati a funzioni diverse.
QButtonGroup
da QtWidgets
raggruppa i pulsanti selezionati insieme e si possono creare più istanze di QButtonGroup
per isolare i pulsanti radio da gruppi diversi in modo che più pulsanti possano essere controllati nello stesso widget padre.
Di seguito viene mostrato l’esempio per chiedere all’utente di selezionare sia la città che lo stato da due gruppi di pulsanti radio.
import sys
from PyQt5.QtWidgets import (
QLabel,
QRadioButton,
QPushButton,
QVBoxLayout,
QApplication,
QWidget,
QButtonGroup,
)
class basicRadiobuttonExample(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
self.label = QLabel("Which city do you live in?")
self.rbtn1 = QRadioButton("New York")
self.rbtn2 = QRadioButton("Houston")
self.label2 = QLabel("")
self.label3 = QLabel("Which state do you live in?")
self.rbtn3 = QRadioButton("New York")
self.rbtn4 = QRadioButton("Texas")
self.label4 = QLabel("")
self.btngroup1 = QButtonGroup()
self.btngroup2 = QButtonGroup()
self.btngroup1.addButton(self.rbtn1)
self.btngroup1.addButton(self.rbtn2)
self.btngroup2.addButton(self.rbtn3)
self.btngroup2.addButton(self.rbtn4)
self.rbtn1.toggled.connect(self.onClickedCity)
self.rbtn2.toggled.connect(self.onClickedCity)
self.rbtn3.toggled.connect(self.onClickedState)
self.rbtn4.toggled.connect(self.onClickedState)
layout = QVBoxLayout()
layout.addWidget(self.label)
layout.addWidget(self.rbtn1)
layout.addWidget(self.rbtn2)
layout.addWidget(self.label2)
layout.addWidget(self.label3)
layout.addWidget(self.rbtn3)
layout.addWidget(self.rbtn4)
layout.addWidget(self.label4)
self.setGeometry(200, 200, 300, 300)
self.setLayout(layout)
self.setWindowTitle("PyQt5 Radio Button Example")
self.show()
def onClickedCity(self):
radioBtn = self.sender()
if radioBtn.isChecked():
self.label2.setText("You live in " + radioBtn.text())
def onClickedState(self):
radioBtn = self.sender()
if radioBtn.isChecked():
self.label4.setText("You live in " + radioBtn.text())
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = basicRadiobuttonExample()
sys.exit(app.exec_())
self.btngroup1 = QButtonGroup()
self.btngroup2 = QButtonGroup()
Vengono creati due gruppi di pulsanti per tenere premuti i pulsanti radio.
self.btngroup1.addButton(self.rbtn1)
self.btngroup1.addButton(self.rbtn2)
self.btngroup2.addButton(self.rbtn3)
self.btngroup2.addButton(self.rbtn4)
I pulsanti di opzione degli stessi gruppi vengono aggiunti allo stesso QButtonGroup
.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook