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

Python/PyQt5修改字典数据后QPushButton setEnabled(False)失效问题

问题根因

你代码里的问题出在onButtonClick方法中这行多余的绑定逻辑:

self.serversChecked.amount_of_servers.connect(self.setupUi)

Worker线程的run方法执行时,第一时间就会发射amount_of_servers信号,这个信号会触发setupUi重新执行:

  • setupUi会重新创建所有控件,包括countBtn按钮
  • 你之前执行的self.countBtn.setEnabled(False)是作用在旧的按钮实例上的,新创建的按钮默认处于启用状态,所以看起来禁用功能失效了。你额外加的disableButton测试函数没生效也是同样的原因:触发start_long_task信号时setupUi已经重建了按钮,之前绑定的槽函数作用的也是旧的按钮实例。

解决方法

直接删掉那行绑定setupUi的代码即可。setupUi只需要在窗口初始化的时候执行一次,不需要每次点击按钮都重新构建一次界面。

另外建议补充一个优化点:每次点击按钮都会给Worker的信号绑定新的槽函数,建议每次用完Worker之后断开旧的信号连接,避免槽函数重复执行。

内容的提问来源于stack exchange,提问作者Gregory Sky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:24:01