数据/图像分析管理器

该代码实现了一个数据/图像分析管理器,通过图形用户界面(GUI)来启动、停止和配置分析脚本。使用PyQt6库来构建界面,包括树视图、按钮、文本框和下拉菜单。代码主要包括四个类:checkableModelTreeViewWidgetaddAnalysisWidgetAnalysisManager

类和方法

checkableModel

checkableModel 继承自 QtGui.QStandardItemModel,实现了一个可检查的模型。

方法:

  • test(self):测试方法(空实现)。

TreeViewWidget

TreeViewWidget 继承自 QWidget,实现了一个树视图组件,用于显示和管理分析任务。

方法:

  • __init__(self, props, parent=None):初始化树视图组件。

    • props:属性对象,用于存储和管理配置数据。
    • parent:父窗口。
    • 创建树视图和模型,并设置定时器定期更新任务状态。
  • createMailModel(self, parent):创建树视图模型。

    • 设置模型的列标题。
    • 连接模型的itemChanged信号到itchange方法。
  • itchange(self, item):处理模型项改变事件。

    • item:改变的模型项。
    • 根据项的检查状态,启动或停止相应的分析任务,并更新属性。
  • killVagabonding(self, pname, pargs):终止运行的孤立进程。

    • pname:程序名称。
    • pargs:程序参数。
    • 根据操作系统,查找并终止孤立进程。
  • startProcess(self, name):启动分析任务。

    • name:任务名称。
    • 终止同名任务后,启动新任务并记录进程对象。
  • endProcess(self, name):终止分析任务。

    • name:任务名称。
    • 如果任务在运行,则终止进程并记录日志。
  • updateStatus(self):更新任务状态。

    • 检查进程是否仍在运行,更新任务状态和视图。
  • addItem(self, direc, script, Filtername, active, category, streams):添加新任务到树视图。

    • direc:目录。
    • script:脚本名称。
    • Filtername:任务名称。
    • active:任务是否激活。
    • category:任务类别。
    • streams:数据流。
    • 创建新任务项并添加到模型中。
  • del_current(self):删除当前选中的任务。

    • 获取选中的任务项并删除相应的任务和进程。
  • configureCurrent(self):配置当前选中的任务。

    • 获取选中的任务项,打开属性编辑对话框进行配置。
  • __del__(self):析构函数,终止所有运行中的任务。

addAnalysisWidget

addAnalysisWidget 继承自 QWidget,实现了一个用于添加新分析任务的组件。

方法:

  • __init__(self, manager, parent=None):初始化添加分析任务组件。

    • manager:分析管理器对象。
    • parent:父窗口。
    • 创建布局、按钮、文本框和下拉菜单。
  • update_streamlist(self, category):更新数据流列表。

    • category:任务类别。
    • 根据选定的类别更新数据流下拉菜单。
  • addd(self):添加新任务。

    • 获取输入的信息,创建新任务,并添加到分析管理器中。

AnalysisManager

AnalysisManager 继承自 BWidget,实现了分析管理器,管理分析脚本的运行。

方法:

  • __init__(self, name='Analysis', parent=None):初始化分析管理器。

    • name:管理器名称,默认为’Analysis’。
    • parent:父窗口。
    • 设置属性和分析目录,初始化GUI。
  • initGUI(self):初始化GUI界面。

    • 创建添加分析任务组件和树视图组件,并设置布局。
    • 添加已有任务到树视图中。
  • delentry(self):删除当前选中的任务。

    • 调用树视图的del_current方法。
  • configureFilter(self):配置当前选中的任务。

    • 调用树视图的configureCurrent方法。

主函数

代码通过创建 QApplication 实例和 AnalysisManager 窗口来执行,并启动应用程序的主循环。

def main():
    app = QtWidgets.QApplication(sys.argv)
    icon = QtGui.QIcon()
    icon.addFile(iconpath + '/analysis.png')
    app.setWindowIcon(icon)
    Win = AnalysisManager()
    Win.setWindowTitle('Data/Image analysis manager')
    Win.show()
    sys.exit(app.exec())

代码执行

该代码通过命令行执行,创建一个AnalysisManager对象,并显示数据/图像分析管理器窗口。