今天是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上了
本章gitee地址:https://gitee.com/qinganan_admin/Pyside6_Information/blob/master/%E7%AC%AC%E4%BA%8C%E7%AB%A0%EF%BC%8C%E6%8C%89%E9%92%AE/QRadioButton.py