正文:
描述(Description)
在使用 ok-script-app (v1.1.2) 时,应用程序在启动或加载自定义任务(位于 ok_tasks 目录)后,UI界面似乎进入了一个不稳定状态。点击“停止”按钮或应用程序尝试刷新任务卡片UI时,主线程会反复抛出 RuntimeError: libshiboken: Internal C++ object (PushButton) already deleted 异常。这导致任务无法正常启动或停止,并且UI交互失效。
复现步骤(Steps to Reproduce)
- 将自定义任务脚本(如
viring.py 或 MyOneTimeTask.py)放入 working/ok_tasks/ 目录。
- 启动
ok-script-app。
- 观察应用日志或尝试与任务卡片交互(例如,点击“开始”或“停止”按钮)。
- 错误会在应用启动后的任务加载阶段,或在点击按钮触发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)
- 这是否为
ok-script-app 框架在处理自定义任务动态加载/卸载时的一个已知Bug?
- 是否有推荐的编码规范或最佳实践,以确保自定义任务的UI组件(如按钮)的生命周期与框架管理一致?
- 作为一种临时解决方案,我可以在自定义任务中做些什么来避免触发这个错误?
正文:
描述(Description)
在使用
ok-script-app(v1.1.2) 时,应用程序在启动或加载自定义任务(位于ok_tasks目录)后,UI界面似乎进入了一个不稳定状态。点击“停止”按钮或应用程序尝试刷新任务卡片UI时,主线程会反复抛出RuntimeError: libshiboken: Internal C++ object (PushButton) already deleted异常。这导致任务无法正常启动或停止,并且UI交互失效。复现步骤(Steps to Reproduce)
viring.py或MyOneTimeTask.py)放入working/ok_tasks/目录。ok-script-app。预期行为(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)
环境信息(Environment)
pyappify打包可能的相关上下文(Additional Context)
TaskCard组件尝试访问一个已经被Qt/C++垃圾回收器销毁的PushButton对象。这可能是由于在Qt对象生命周期管理上存在问题,例如在对象被删除后仍尝试更新其属性。viring.py)本身可能包含导致UI引用失效的代码,但错误堆栈指向的是框架内部的UI更新逻辑。问题(Questions)
ok-script-app框架在处理自定义任务动态加载/卸载时的一个已知Bug?