Python PyQt5 实现两个 CheckBox 之间的互斥关系

发布于:2024-10-15 ⋅ 阅读:(129) ⋅ 点赞:(0)

在 PyQt5 中,你可以通过连接信号和槽来实现两个 CheckBox 之间的互斥关系。具体来说,当一个 CheckBox 被勾选时,另一个 CheckBox 应该被取消勾选,反之亦然。以下是一个示例代码,展示了如何实现这个功能,并在软件启动时默认选中第一个 CheckBox。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QCheckBox

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        self.setWindowTitle('CheckBox Example')

        # 创建两个 CheckBox
        self.checkbox = QCheckBox('Checkbox 1', self)
        self.checkbox_2 = QCheckBox('Checkbox 2', self)

        # 设置默认选中第一个 CheckBox
        self.checkbox.setChecked(True)

        # 连接信号和槽
        self.checkbox.stateChanged.connect(self.on_checkbox_state_changed)
        self.checkbox_2.stateChanged.connect(self.on_checkbox_2_state_changed)

        # 布局
        layout = QVBoxLayout()
        layout.addWidget(self.checkbox)
        layout.addWidget(self.checkbox_2)

        self.setLayout(layout)

    def on_checkbox_state_changed(self, state):
        # 当 checkbox 状态改变时,改变 checkbox_2 的状态
        # state 为 Qt.Unchecked (0) 或 Qt.Checked (2)
        self.checkbox_2.setChecked(state == 0)

    def on_checkbox_2_state_changed(self, state):
        # 当 checkbox_2 状态改变时,改变 checkbox 的状态
        self.checkbox.setChecked(state == 0)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

代码解释:

  1. 导入必要的模块

    • sys 用于处理系统相关的操作,比如退出程序。
    • QApplication, QWidget, QVBoxLayout, QCheckBox 是 PyQt5 中用于创建 GUI 应用程序的类。
  2. 创建主窗口类 MyWindow

    • 继承自 QWidget
    • __init__ 方法中调用 initUI 方法来初始化用户界面。
  3. 初始化用户界面 initUI

    • 设置窗口标题。
    • 创建两个 QCheckBox 对象。
    • 设置第一个 QCheckBox 默认选中。
    • 连接两个 QCheckBoxstateChanged 信号到相应的槽函数。
    • 使用 QVBoxLayout 布局管理器来管理两个 QCheckBox 的布局。
  4. 槽函数

    • on_checkbox_state_changed:当第一个 QCheckBox 的状态改变时,根据状态设置第二个 QCheckBox 的状态。
    • on_checkbox_2_state_changed:当第二个 QCheckBox 的状态改变时,根据状态设置第一个 QCheckBox 的状态。
  5. 运行应用程序

    • 创建 QApplication 对象。
    • 创建 MyWindow 对象并显示。
    • 进入应用程序的主循环。

这样,当你运行这个程序时,你会看到两个 CheckBox,并且第一个 CheckBox 默认是选中的。当你勾选或取消勾选其中一个 CheckBox 时,另一个 CheckBox 会自动取反。


网站公告

今日签到

点亮在社区的每一天
去签到