Pyside6-第五篇-单选按钮QRadioButton

简介: Pyside6-第五篇-单选按钮QRadioButton

今天是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

目录
相关文章
Pyside6-第四篇-QCheckBox复选框
Pyside6-第四篇-QCheckBox复选框
637 0
Pyside6-第四篇-QCheckBox复选框
Pyside6-第十篇-纯文本QPlainTextEdit
Pyside6-第十篇-纯文本QPlainTextEdit
476 0
Pyside6-第十篇-纯文本QPlainTextEdit
Pyside6-第八篇-QLabel文本标签
Pyside6-第八篇-QLabel文本标签
390 0
Pyside6-第七篇-QLineEdit文本行编辑(内设案例)
Pyside6-第七篇-QLineEdit文本行编辑(内设案例)
792 0
Pyside6-第三篇-QToolButton一个的按钮
Pyside6-第三篇-QToolButton一个的按钮
266 0
Pyside6-第六篇-各按钮的信号与槽
Pyside6-第六篇-各按钮的信号与槽
268 0
Pyside6-第二篇-QPushButton一个普通按钮
Pyside6-第二篇-QPushButton一个普通按钮
266 0
Pyside6-第九篇-QTextEdit多行文本编辑器
Pyside6-第九篇-QTextEdit多行文本编辑器
396 0
Pyside6-第十一篇-QComboBox下拉列表
Pyside6-第十一篇-QComboBox下拉列表
746 0
|
索引 Python 容器
Python高级进阶#017 pyqt5下拉列表控件QComboBox
Python高级进阶#017 pyqt5下拉列表控件QComboBox
481 0