You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQt开发:如何通过Toggle开关切换实现QPushButton冻结禁用

实现Toggle开关控制QPushButton冻结的修改方案
  • 第一步:修改自定义ToggleSwitch类,将内部开关实例暴露为实例属性,方便外部访问其信号
class ToggleSwitch(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        tog = QHBoxLayout(self)
        # 将AnimatedToggle设为实例属性,外部可访问其状态和信号
        self.secondaryToggle = AnimatedToggle(
            checked_color="#00AA00",
        )
        tog.addWidget(self.secondaryToggle)
  • 第二步:在Ui_MainWindow的setupUi方法中添加ToggleSwitch实例,并绑定开关状态变化信号
def setupUi(self, MainWindow):
    # 原有代码保持不变,在pushButton定义完成后添加以下内容
    # 实例化自定义开关,调整坐标和尺寸到你需要的位置
    self.toggle_switch = ToggleSwitch(self.tab)
    self.toggle_switch.setGeometry(QtCore.QRect(800, 500, 100, 50))
    # 绑定开关切换信号到控制按钮状态的槽函数
    self.toggle_switch.secondaryToggle.toggled.connect(self.control_button_state)

    # 原有代码保持不变
    MainWindow.setCentralWidget(self.centralwidget)
    self.retranslateUi(MainWindow)
    QtCore.QMetaObject.connectSlotsByName(MainWindow)
  • 第三步:在Ui_MainWindow类中添加控制按钮状态的槽函数
@QtCore.pyqtSlot(bool)
def control_button_state(self, is_toggle_checked):
    # 开关勾选时冻结按钮,取消勾选时恢复按钮可用
    self.pushButton.setDisabled(is_toggle_checked)

可根据实际需求调整控制逻辑:如果需要开关勾选时启用按钮、取消时冻结,将槽函数内的代码改为self.pushButton.setDisabled(not is_toggle_checked)即可。
如果你不需要点击按钮后自动冻结,可删除原有release槽函数中的self.pushButton.setDisabled(True)代码,避免按钮手动点击后开关控制失效。

内容的提问来源于stack exchange,提问作者Deepu Johnson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:45:05