? 当同一个程序中存在多组radiobutton时,怎么区分各组按钮?
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("QRadioButton-功能测试")
window.resize(500, 500)
#*******创建共同的父控件*******开始
w1 = QWidget(window)
w1.resize(200, 200)
w1.setStyleSheet("background-color: blue;")
w1.move(50, 50)
w2 = QWidget(window)
w2.resize(200, 200)
w2.setStyleSheet("background-color: yellow;")
w2.move(w1.x() + w1.width(), w1.y())
rb_nan = QRadioButton("男", w1)
rb_nan.move(10, 10)
rb_nan.setChecked(True)
rb_nv = QRadioButton("女", w1)
rb_nv.move(10, 50)
rb_nv.toggled.connect(lambda isChecked: print(isChecked))
rb_yes = QRadioButton("yes", w2)
rb_yes.move(10, 10)
rb_no = QRadioButton("no", w2)
rb_no.move(10, 50)
#*******创建共同的父控件*******结束
# 2.3 展示控件
window.show()
# 3. 应用程序的执行, 进入到消息循环
sys.exit(app.exec_())
结果
注意:为了分组创建多个父控件,会占用多余的资源,且管理并不方便,所以不推荐此种方法,而更推荐下面的方法。
?
什么是抽象按钮组?
代码
from PyQt5.Qt import *
import sys
app = QApplication(sys.argv)
window = QWidget()
window.setWindowTitle("按钮组的使用")
window.resize(500, 500)
#*******QButtonGroup 测试*******开始
# 创建四个单选按钮
# 男女
r_male = QRadioButton("男", window)
r_female = QRadioButton("女", window)
r_male.move(100, 100)
r_female.move(100, 150)
r_male.setChecked(True)
sex_group = QButtonGroup(window)
sex_group.addButton(r_male, 1)
sex_group.addButton(r_female, 2)
# 是否
r_yes = QRadioButton("是", window)
r_no = QRadioButton("否", window)
r_yes.move(300, 100)
r_no.move(300, 150)
answer_group = QButtonGroup(window)
answer_group.addButton(r_yes)
answer_group.addButton(r_no)
#*******QButtonGroup 测试*******结束
window.show()
sys.exit(app.exec_())
结果
使用 QButtonGroup 对 QRadioButton 进行互斥分组是推荐的方案,QButtonGroup 还具备多种扩展的api功能,后续会更新。