PyQt5 QRadioButton小部件
QRadioButton 类对象是一个带有文本标签的可选择按钮。用户可以在表单上选择其中一个选项。该类派生自QAbstractButton类。
单选按钮默认是自动排斥的。因此,在父窗口中只能选择一个单选按钮。如果选择了其中一个按钮,则之前选择的按钮会自动取消选择。单选按钮也可以放置在 QGroupBox 或 QButtonGroup 中,在父窗口上创建多个可选择字段。
下面列出的QRadioButton类的方法是最常用的。
序号 | 方法&描述 |
---|---|
1 | setChecked() 改变单选按钮的状态 |
2 | setText() 设置与按钮关联的标签 |
3 | text() 检索按钮的标题 |
4 | isChecked() 检查按钮是否已选中 |
QRadioButton对象关联的默认信号是toggled(),尽管也可以实现继承自QAbstractButton类的其他信号。
示例
在顶级窗口上构造了两个互斥的单选按钮。
通过语句将b1的默认状态设置为checked –
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
版权声明:本页面内容旨在传播知识,为用户自行发布,若有侵权等问题请及时与本网联系,我们将第一时间处理。E-mail:284563525@qq.com