QRadioButton

QRadioButton

该类提供了一组可供选择的按钮和文本标签,用户可以选择其中一个选项,标签用于显示对应的文本信息。单选钮是一种开关按钮,可以切换为on或者off,急checked或者unchecked,主要是为用户提供“多选一”的选择。

QRadioButton 是单选按钮默认是独占的。对于继承自同一个人父类Widget的多个单选按钮,他们属于同一个按钮组合,在单选钮组里,一次只能选择一个单选钮。如果需要多个独占的按钮组合,则需要将他们放在QGroupBox或QButtonGroup中。

当将单选按钮切换到ON或者OFF时,就会发送toggled信号,绑定这个信号,在按钮状态发生改变时,触发相应的行为。

QRadioButton类中的常用方法如下所示:

 

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

在QRadioButton中,toggled信号是在切换单选状态按钮状态(开、关)时发射的,而clicked信号则在每次点击单选钮时都会发射。在实际中,一般只有状态改变时,才有必要去响应,因此,toggled信号更适合用于状态监控。

QRadioButton按钮的使用

代码:

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


class RedioDemo(QWidget):
   def __init__(self):
       super(RedioDemo, self).__init__()

       layout = QHBoxLayout()
       self.btn1 = QRadioButton("Button1")
       # 默认为选中状态
       self.btn1.setChecked(True)
       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")
       self.resize(100,100)


   def btnstate(self, btn):
       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 = RedioDemo()
   radioDemo.show()
   sys.exit(app.exec_())

效果如图所示:

 

 

 

posted @   胸怀丶若谷  阅读(2944)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
点击右上角即可分享
微信分享提示

目录导航