PyQt5 QRadioButton单选按钮控件详解:方法、信号与分组机制

月亮慢半拍
月亮慢半拍
发布时间:2026-10-13| 6人浏览过
原创

本文深入解析PyQt5中QRadioButton控件的使用方法。涵盖setChecked、isChecked等核心API,详解toggled信号与lambda表达式在状态监听中的应用,并演示如何通过QButtonGroup实现多组互斥按钮的独立管理,附带完整代码示例与效果说明。

PyQt5单选按钮控件QRadioButton简介

QRadioButton类继承自QAbstractButton,旨在为用户提供一组互斥的选择项。

当仅存在一个QRadioButton时,其行为类似于复选框,允许用户进行选中与取消操作;而在存在多个单选按钮的场景下,系统强制要求必须有一个按钮处于选中状态。

QRadioButton类中常用的方法

方法 描述
setCheckanle() 设置按钮是否已经被选中,可以改变单选按钮的选中状态,如果设置为True则表示单选按钮将保持以点击和释放状态
isChecked() 返回单选按钮的状态,返回值True或False
setText() 设置单选按钮显示的文本
text() 返回单选按钮显示的文本

QRadioButton按钮的使用实例


import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class RadioDemo(QWidget):
 def __init__(self,parent=None):
  super(RadioDemo,self).__init__(parent)
  #水平布局
  layout=QHBoxLayout()


  self.btn1=QRadioButton('Button1')
  #默认选中btn1
  self.btn1.setChecked(True)
  #toggled信号与槽函数绑定
  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):
 #输出按钮1与按钮2的状态,选中还是没选中
  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_())

效果如图

QRadioButton代码分析

在此示例中,两个互斥的单选按钮被放置在窗口界面中。

第一个单选按钮btn1被设置为默认选中状态。


self.btn1.setChecked(True)

当用户在两个按钮之间切换选择时,按钮状态发生变化并触发toggle信号,该信号与槽函数btnstate()相连。此处采用lambda方式,允许将源信号作为参数传递给槽函数,从而获取具体的按钮对象。


self.btn1.toggled.connect(lambda :self.btnstate(self.btn1))
self.btn1.toggled.connect(lambda :self.btnstate(self.btn1))

当toggled信号发射后,btnstate()函数用于检测并处理按钮的具体状态。

所有QRadioButton控件默认具有互斥性,因此可以通过多个父控件对QRadioButton进行分组。不过,通常建议使用QButtonGroup来对按键进行分组,通过按键分组的方式让不同类型的QRadioButton不互相排斥。

本文主要讲解了PyQt5单选按钮控件QRadioButton详细使用方法与实例,更多关于PyQt5控件知识请查看下面的相关链接

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。