PyQt5 – QRadioButton小工具
QRadioButton类对象展示了一个带有文本标签的可选择按钮。用户可以从表单上呈现的许多选项中选择一个。这个类是由QAbstractButton类派生的。
单选按钮在默认情况下是自动排除的。因此,在父窗口中,每次只能选择一个单选按钮。如果有一个被选中,之前被选中的按钮会自动取消选择。单选按钮也可以放在一个QGroupBox或QButtonGroup中,以便在父窗口中创建多个可选择的字段。
以下列出的QRadioButton类的方法是最常使用的。
Sr.No. | 方法和描述 |
---|---|
1 | setChecked() 改变单选按钮的状态 |
2 | setText() 设置与按钮相关的标签。 |
3 | text() 检索按钮的标题。 |
4 | isChecked() 检查按钮是否被选中。 |
与QRadioButton对象相关的默认信号是toggled(),尽管其他从QAbstractButton类继承的信号也可以被实现。
示例
在这里,两个相互排斥的单选按钮被构建在一个顶层窗口上。
b1的默认状态被语句——设置为检查。
Self.b1.setChecked(True)
两个按钮的toggled()信号被连接到btnstate()函数。使用lambda允许将信号源作为参数传递给函数。
self.b1.toggled.connect(lambda:self.btnstate(self.b1))
self.b2.toggled.connect(lambda:self.btnstate(self.b2))
btnstate()函数检查发出toggled()信号的按钮的状态。
if b.isChecked() == True:
print b.text()+" is selected"
else:
print b.text()+" is deselected"
QRadioButton例子的完整代码如下
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class Radiodemo(QWidget):
def __init__(self, parent = None):
super(Radiodemo, self).__init__(parent)
layout = QHBoxLayout()
self.b1 = QRadioButton("Button1")
self.b1.setChecked(True)
self.b1.toggled.connect(lambda:self.btnstate(self.b1))
layout.addWidget(self.b1)
self.b2 = QRadioButton("Button2")
self.b2.toggled.connect(lambda:self.btnstate(self.b2))
layout.addWidget(self.b2)
self.setLayout(layout)
self.setWindowTitle("RadioButton demo")
def btnstate(self,b):
if b.text() == "Button1":
if b.isChecked() == True:
print b.text()+" is selected"
else:
print b.text()+" is deselected"
if b.text() == "Button2":
if b.isChecked() == True:
print b.text()+" is selected"
else:
print b.text()+" is deselected"
def main():
app = QApplication(sys.argv)
ex = Radiodemo()
ex.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
上述代码产生了以下输出 —
Button1 is deselected
Button2 is selected
Button2 is deselected
Button1 is selected