单选框

QRadioButton是单选按钮,它提供了一组可供选择的按钮和文本标签,用户可以选择其中一个选项
单选框选中的信号是:toggled
PyQt单选框和复选框 - 图1
代码示例:

  1. from PyQt5.QtWidgets import *
  2. from PyQt5.QtCore import *
  3. import sys
  4. def func(checked):
  5. '''
  6. 状态变化的槽函数
  7. :param checked: 是否被选中
  8. :return:
  9. '''
  10. print('状态变化', checked)
  11. # 1.创建应用程序
  12. app = QApplication(sys.argv)
  13. # 2.创建窗口
  14. w = QWidget()
  15. # 修改窗口标题
  16. w.setWindowTitle('单选框')
  17. """------------------ 创建布局 ------------------"""
  18. layout = QHBoxLayout()
  19. # 添加布局到窗口中
  20. w.setLayout(layout)
  21. # 创建两个单选框
  22. rb1 = QRadioButton('男')
  23. rb2 = QRadioButton('女')
  24. rb1.setChecked(True)
  25. # 添加到布局中
  26. layout.addWidget(rb1)
  27. layout.addWidget(rb2)
  28. # 绑定信号和槽
  29. rb1.toggled.connect(func)
  30. # 3.显示窗口
  31. w.show()
  32. # 4.等待窗口停止
  33. sys.exit(app.exec())

如果想给QRadioButton组设置监听事件,可按照如下代码添加:

  1. # 声明槽函数
  2. def on_group_toggle(btn: QRadioButton):
  3. print(btn, btn.isChecked())
  4. # 添加两个单选钮到QButtonGroup,并添加选中事件
  5. group = QButtonGroup(w)
  6. group.addButton(btn1)
  7. group.addButton(btn2)
  8. group.buttonToggled.connect(on_group_toggle)

2. 复选框

QCheckBox提供了一组带文本标签的复选框,用户可以选择多个选项
PyQt单选框和复选框 - 图2
复选框的状态变化信号是stateChanged
代码示例:

  1. from PyQt5.QtWidgets import *
  2. from PyQt5.QtCore import *
  3. from PyQt5.QtGui import *
  4. import sys
  5. def func(state):
  6. # 判断是否选中
  7. if state == Qt.Checked: # 2
  8. print('选中')
  9. else: # 0
  10. print('未选中')
  11. # 1.创建应用程序
  12. app = QApplication(sys.argv)
  13. # 2.创建窗口
  14. w = QWidget()
  15. # 修改窗口标题
  16. w.setWindowTitle('复选框')
  17. """------------------ 窗口布局 ------------------"""
  18. layout = QHBoxLayout()
  19. # 添加到窗口中
  20. w.setLayout(layout)
  21. # 控件
  22. label = QLabel()
  23. label.setText('谦哥的爱好:')
  24. ck1 = QCheckBox('抽烟')
  25. ck2 = QCheckBox('喝酒')
  26. ck3 = QCheckBox('烫头')
  27. # 选中第一个
  28. ck1.setChecked(True)
  29. # 添加控件到布局中
  30. layout.addWidget(label)
  31. layout.addWidget(ck1)
  32. layout.addWidget(ck2)
  33. layout.addWidget(ck3)
  34. # 绑定信号和槽
  35. ck1.stateChanged.connect(func)
  36. # 3.显示窗口
  37. w.show()
  38. # 4.等待窗口停止
  39. sys.exit(app.exec())