实验集合管理器
该代码定义了一个用于管理和监控多个进程的图形用户界面(GUI)应用程序。
环境变量设置
代码通过检查操作系统平台设置了 QT_SCALE_FACTOR
环境变量,以调整 MacOS 上的缩放比例。
SingleProcess 类
SingleProcess
类用于表示单个可管理的进程。以下是该类的详细分析:
初始化方法
__init__
方法:- 初始化类实例,并设置初始状态或配置。
- 接受
script
、name
、active
、category
和parent
作为参数。 - 根据操作系统平台设置 Python 解释器路径。
- 创建和配置按钮、布局和样式表。
- 配置定时器以定期更新进程状态。
进程管理方法
startProcess
方法:- 停止现有进程(如果有)。
- 使用
subprocess.Popen
启动新的进程。 - 更新按钮状态。
stopProcess
方法:- 停止现有进程,根据需要选择终止或强制杀死进程。
- 更新按钮状态。
updateStatus
方法:- 定期检查进程状态并更新按钮颜色以指示进程是否运行。
析构方法
__del__
方法:- 确保在对象销毁时停止进程。
ProcessManager 类
ProcessManager
类用于管理多个 SingleProcess
实例。以下是该类的详细分析:
初始化方法
__init__
方法:- 初始化类实例,并设置初始状态或配置。
- 读取配置文件,创建
SingleProcess
实例,并将其添加到布局中。 - 设置窗口样式和布局。
事件处理方法
closeEvent
方法:- 在关闭窗口时,停止所有正在运行的进程。
析构方法
__del__
方法:- 在对象销毁时输出调试信息。
主函数
main
方法:- 设置高 DPI 缩放策略。
- 创建应用程序实例,设置窗口图标,创建和显示主窗口。
- 进入应用程序事件循环。
结论
该代码实现了一个进程管理和监控的 GUI 应用程序。通过 SingleProcess
类,用户可以启动、停止和监控单个进程;通过 ProcessManager
类,用户可以批量管理多个进程。代码结构清晰,使用了 PyQt6 的多种控件和信号槽机制来实现用户交互和数据更新。