Skip to content

[Bug] 加载自定义任务时出现 "libshiboken: Internal C++ object (PushButton) already deleted" 错误 #92

Description

@try1995

正文:

描述(Description)
在使用 ok-script-app (v1.1.2) 时,应用程序在启动或加载自定义任务(位于 ok_tasks 目录)后,UI界面似乎进入了一个不稳定状态。点击“停止”按钮或应用程序尝试刷新任务卡片UI时,主线程会反复抛出 RuntimeError: libshiboken: Internal C++ object (PushButton) already deleted 异常。这导致任务无法正常启动或停止,并且UI交互失效。

复现步骤(Steps to Reproduce)

  1. 将自定义任务脚本(如 viring.pyMyOneTimeTask.py)放入 working/ok_tasks/ 目录。
  2. 启动 ok-script-app
  3. 观察应用日志或尝试与任务卡片交互(例如,点击“开始”或“停止”按钮)。
  4. 错误会在应用启动后的任务加载阶段,或在点击按钮触发UI更新时出现。

预期行为(Expected Behavior)
自定义任务应能被正常加载,其对应的UI卡片(TaskCard)上的按钮(如“开始”、“停止”、“说明”)应能正常工作,不会抛出C++对象已删除的异常。

实际行为(Actual Behavior)

  • 应用启动时,日志中出现 ERROR MainThread task_manager:Error loading ... libshiboken: Internal C++ object (PushButton) already deleted.
  • 当点击任务卡片上的“停止”按钮时,会在调用 self.instructions_button.setVisible(...) 时抛出同样的 RuntimeError,导致UI更新失败。

错误日志(Error Logs)

2026-09-06 11:57:04,987 ERROR MainThread Uncaught exception: Traceback (most recent call last):
  File "C:\Users\xxx\AppData\Local\ok-script-app\data\apps\ok-script-app\working\ok\ui\qt\events.py", line 63, in _invoke
    self._invoke_callback(callback, args, kwargs)
  ...
  File "C:\Users\xxx\AppData\Local\ok-script-app\data\apps\ok-script-app\working\ok\ui\qt\tasks\TaskCard.py", line 187, in update_buttons
    self.instructions_button.setVisible(has_instructions)
RuntimeError: libshiboken: Internal C++ object (PushButton) already deleted.

环境信息(Environment)

  • 操作系统:Windows 10 (Build 19045)
  • 应用版本:v1.1.2 (也曾在 v1.1.1 上复现)
  • Python环境:嵌入版,通过 pyappify 打包
  • GUI框架:PySide6 (Qt)
  • 区域/Profile:China

可能的相关上下文(Additional Context)

  • 该问题在多次启动和版本切换(v1.1.1, v1.1.2)后持续出现。
  • 错误似乎源于 TaskCard 组件尝试访问一个已经被Qt/C++垃圾回收器销毁的 PushButton 对象。这可能是由于在Qt对象生命周期管理上存在问题,例如在对象被删除后仍尝试更新其属性。
  • 自定义任务文件(如 viring.py)本身可能包含导致UI引用失效的代码,但错误堆栈指向的是框架内部的UI更新逻辑。

问题(Questions)

  1. 这是否为 ok-script-app 框架在处理自定义任务动态加载/卸载时的一个已知Bug?
  2. 是否有推荐的编码规范或最佳实践,以确保自定义任务的UI组件(如按钮)的生命周期与框架管理一致?
  3. 作为一种临时解决方案,我可以在自定义任务中做些什么来避免触发这个错误?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions