该类提供了一组可供选择的按钮和文本标签,用户可以选择其中一个选项,标签用于显示对应的文本信息。单选钮是一种开关按钮,可以切换为on或者off,急checked或者unchecked,主要是为用户提供“多选一”的选择。
QRadioButton 是单选按钮默认是独占的。对于继承自同一个人父类Widget的多个单选按钮,他们属于同一个按钮组合,在单选钮组里,一次只能选择一个单选钮。如果需要多个独占的按钮组合,则需要将他们放在QGroupBox或QButtonGroup中。
当将单选按钮切换到ON或者OFF时,就会发送toggled信号,绑定这个信号,在按钮状态发生改变时,触发相应的行为。
QRadioButton类中的常用方法如下所示:
方法 | 描述 |
---|---|
setCheckable() | 设置按钮是否被选中,可以改变单选钮的选中状态,如果设置为True,则表示单选钮将保持已点击或释放状态。 |
isChecked() | 返回单选按钮的状态。设置返回值True或False |
setText() | 设置单选按钮的显示文本 |
text() | 返回单选钮的显示文本 |
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_())
效果如图所示: