QRadioButton在PyQt中用于给用户提供若干选项中的单选操作,继承自QAbstractButton类。例如性别选项,可选的有“男”和“女”,选择一个时,会自动取消其他的选项,具有排他性。QRadioButton在样式上会有一个圆圈按钮,用于标志用户的选中状态。

QRadioButton的创建和基本设置

  • QRadioButton(parent: QWidget = None)
  • QRadioButton(str, parent: QWidget = None) : str就是显示的文本
  • setIcon(QIcon) :设置图标
  • setShortcut():快捷键

当只有一个QRadioButton的时候,可以点击选中以及取消选中,但是有两个及以上的话,就无法通过点击两次来达到取消选中的效果。可以自定尝试体验。

# -*- coding: UTF-8 -*-
from PyQt5.Qt import *
import sys

# 创建一个应用
app = QApplication(sys.argv)
print(sys.argv)

# 创建一个QWidget类的窗口
window = QWidget()
window.setWindowTitle("QRadioButton功能测试")  # 标题
window.resize(500, 500)  # 窗口的大小
window.move(400, 200)  # 窗口初次显示的位置

# 创建其他控件
tb_nan = QRadioButton("男-&Male", window)  # &Male,可以听过Alt+M快速定位选中
tb_nan.setShortcut("Alt+M")  # 可以听过Alt+M快速定位选中,这是第二种方案
tb_nan.move(100, 100)
tb_nan.setIcon(QIcon("飞机.png"))

tb_nv = QRadioButton("女-&Female", window)  # &Female,可以听过Alt+F快速定位选中

tb_nv.move(100, 150)

window.show()  # 显示窗口,不然啥也没有

sys.exit(app.exec_())

单选按钮

可用信号

基类QAbstractButton的八大通用按钮功能_QAbstractButton共性特点_PyQt学习笔记(三十一)

单选按钮上面父类的都可以使用。

单选按钮最常用的还是toggled(bool checked)这个切换信号。

单选按钮默认是具有排他性,但是也可以通过setAutoExclusive(False)来取消。

排他性,是要求在同一个父控件下有多个同级别的单选按钮才具有。

多组互斥问题

现在加入了多组QRadioButton,想要实现的效果:

多组QRadioButton

目前能解决的办法是设置两个区域父对象,分别作为父对象:

# -*- coding: UTF-8 -*-
from PyQt5.Qt import *
import sys

# 创建一个应用
app = QApplication(sys.argv)
print(sys.argv)

# 创建一个QWidget类的窗口
window = QWidget()
window.setWindowTitle("QRadioButton功能测试")  # 标题
window.resize(500, 500)  # 窗口的大小
window.move(400, 200)  # 窗口初次显示的位置

# 创建其他控件
red = QWidget(window)
red.resize(200, 200)
red.setStyleSheet("background-color: red;")
red.move(50, 50)

tb_nan = QRadioButton("男-&Male", red)  # &Male,可以听过Alt+M快速定位选中
tb_nan.setShortcut("Alt+M")  # 可以听过Alt+M快速定位选中,这是第二种方案
tb_nan.move(100, 100)
tb_nan.setIcon(QIcon("飞机.png"))
tb_nv = QRadioButton("女-&Female", red)  # &Female,可以听过Alt+F快速定位选中
tb_nv.move(100, 150)


green = QWidget(window)
green.resize(200, 200)
green.setStyleSheet("background-color: green;")
green.move(250, 250)

rb_yes = QRadioButton("YES", green)
rb_no = QRadioButton("NO", green)
rb_yes.move(100, 100)
rb_no.move(100, 150)

window.show()  # 显示窗口,不然啥也没有

sys.exit(app.exec_())

效果

这显然不是一个比较好的方案,后面会介绍通过按钮组(QButtonGroup)来实现按钮的分类


博主个人公众号
版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2022/QRadioButton.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!

最后修改:2022 年 08 月 06 日
如果觉得我的文章对你有用,请随意赞赏