QRadioButton类继承自QAbstractButton类。单选按钮是一种开关按钮,可以切换为on或off,及checked或者unchecked,主要是为用户提供“多选一”的选择。
QRadioButton是单选按钮控件默认是独占的(Exclusive)。对于继承自同一个父类Widget的多个单选按钮,它们属于同一个按钮组合,在单选按钮组里,一次只能选择一个单选按钮。如果需要对哦个独占的按钮组合,则需要将它们放在QGroupBox或QButtonGroup中。
当单选按钮切换到on或off时,就会发生toggled信号,绑定这个信号,在按钮状态发生改变时,触发相应的行为。
QRadioButton类中的常用方法:
setChecked() 设置按钮是否已经被选中,可以改变单选按钮的选中状态,如果设置为True,则表示单选按钮将保持已点击和释放状态
isChecked() 返回单选按钮的状态。返回值为True或False
setText() 设置单选按钮的显示文本
text() 返回单选按钮的显示文本
在RadioButton中,toggled信号是在切换单选按钮状态(开、关)时发射的,而clicked信号则在每次点击单选按钮时都会发射。在实际中,一般只有状态改变时才有必要去响应,因此toggled信号更适合用于状态监控。
案例15 QRadioButton按钮的使用
import sys from PyQt5.QtWidgets import QWidget, QApplication, QHBoxLayout, QRadioButton class RadioDemo(QWidget): def __init__(self, parent=None): super().__init__(parent) layout = QHBoxLayout() self.btn1 = QRadioButton("Button1") self.btn1.setChecked(True) # 默认选中 self.btn1.toggled.connect(lambda: self.btnstate(self.btn1)) layout.addWidget(self.btn1) self.btn2 = QRadioButton("Button2") self.btn2.toggled.connect(lambda: self.btnstate(self.btn2)) layout.addWidget(self.btn2) self.setLayout(layout) self.setWindowTitle("RadioButton Demo") def btnstate(self, btn): if btn.text() == "Button1": if btn.isChecked() == True: print(btn.text() + " is selected") else: print(btn.text() + " is deselected") if btn.text() == "Button2": if btn.isChecked() == True: print(btn.text() + " is selected") else: print(btn.text() + " is deselected") if __name__ == "__main__": app = QApplication(sys.argv) radiodemo = RadioDemo() radiodemo.show() sys.exit(app.exec_())