今天是Pyside6的第五篇内容。一起来看单选按钮。
QRadioButton。
class QRadioButton(QAbstractButton): """ QRadioButton(self, parent: Optional[PySide6.QtWidgets.QWidget] = None) -> None QRadioButton(self, text: str, parent: Optional[PySide6.QtWidgets.QWidget] = None) -> None """
❝根据源码提示,很明显了,跟前面几个类似
❞
import sys from PySide6.QtWidgets import QApplication, QWidget, QRadioButton class Radio(QWidget): def __init__(self): super(Radio, self).__init__() self.initUI() def initUI(self): self.setGeometry(300, 300, 300, 200) self.setWindowTitle('QRadioButton') btn_radio_man = QRadioButton("男", self) btn_radio_man.move(20, 20) btn_radio_woman = QRadioButton(self) btn_radio_woman.setText("女") btn_radio_woman.move(20, 40) self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Radio() sys.exit(app.exec())
❝它跟复选框不同的是,它默认情况下只能单选(有点废话),不允许多选。
❞
设置多选.setAutoExclusive
它也是支持多选的
import sys from PySide6.QtWidgets import QApplication, QWidget, QRadioButton class Radio(QWidget): def __init__(self): super(Radio, self).__init__() self.initUI() def initUI(self): self.setGeometry(300, 300, 300, 200) self.setWindowTitle('QRadioButton') btn_radio_man = QRadioButton("男", self) btn_radio_man.move(20, 20) btn_radio_woman = QRadioButton(self) btn_radio_woman.setText("女") btn_radio_woman.move(20, 40) btn_radio_woman.setAutoExclusive(False) # 排他性 self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Radio() sys.exit(app.exec())
设置图标.setIcon
from PySide6.QtGui import QIcon from PySide6.QtWidgets import QApplication, QWidget, QRadioButton class Radio(QWidget): def __init__(self): super(Radio, self).__init__() self.initUI() def initUI(self): self.setGeometry(300, 300, 300, 200) self.setWindowTitle('QRadioButton') btn_radio_man = QRadioButton("男", self) btn_radio_man.setIcon(QIcon("图标.png")) # 设置图标 btn_radio_man.move(20, 20) self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Radio() sys.exit(app.exec())
示例-多个单选
❝有的时候会存在2个以上的单选,怎么解决排他性呢
❞
❝我又想选是或者否,又想选择男或者女,怎么办。
❞
import sys from PySide6.QtGui import QIcon from PySide6.QtWidgets import QApplication, QWidget, QRadioButton, QButtonGroup class Radio(QWidget): def __init__(self): super(Radio, self).__init__() self.initUI() def initUI(self): self.setGeometry(300, 300, 300, 200) self.setWindowTitle('QRadioButton') # 创建按键组 QBG1 = QButtonGroup(self) QBG2 = QButtonGroup(self) btn_radio_man = QRadioButton("男", self) btn_radio_man.setIcon(QIcon("图标.png")) # 设置图标 btn_radio_man.move(20, 20) QBG1.addButton(btn_radio_man, 1) # 将按钮添加进按钮组 btn_radio_woman = QRadioButton(self) btn_radio_woman.setText("女") btn_radio_woman.move(20, 40) QBG1.addButton(btn_radio_woman, 2) # 将按钮添加进按钮组 btn_radio_yes = QRadioButton("是", self) btn_radio_yes.move(60, 20) QBG2.addButton(btn_radio_yes, 1) # 将按钮添加进按钮组 btn_radio_no = QRadioButton("否", self) btn_radio_no.move(60, 40) QBG2.addButton(btn_radio_no, 2) # 将按钮添加进按钮组 self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = Radio() sys.exit(app.exec())
这样就能多个单选多选了。用到了另一个类方法QButtonGroup,注意上述代码没写排他性。
最后,源代码放在了gitee上了