Skip to content

overflow65537/MFW-PyQt6

Repository files navigation

LOGO

MFW-PyQt6

简体中文 | English

基于 PyQT6MAAFramework 通用 GUI 项目

license Python platform commit

开发环境

  • Python 3.12

使用方法

直接使用

  • pip install -r requirements.txt
  • python main.py

使用GitHub action 自动构建

  • depoly\deploy.py 中的项目名和项目地址修改为你的项目名和项目地址并上传至GitHub仓库根目录
  • deploy\install.yml 中MaaXXX修改为你的项目名并上传至GitHub仓库的.github/workflows目录
  • 推送新版本

功能说明

多配置启动

  • 在计划任务界面点击资源的添加按钮即可添加资源
  • 每个资源可以有多个配置,互相独立
  • 结束后操作可以选择启动其他资源中的某项配置文件
  • 配合启动后执行任务可以实现多资源的无缝启动

参数启动

  • -r参数可接受资源名称 例如 python main.py -r resource1或者 MFW.exe -r resource1
  • -c参数可接受配置文件名称 例如 python main.py -c config1或者 MFW.exe -c config1
  • -d参数可以在运行后直接启动任务 例如 python main.py -d或者 MFW.exe -d

版本锁定

  • interface.json文件中添加MFW_min_req_version键,值为MFW的版本号
"MFW_min_req_version": "1.5.4"
  • 添加后,如果MFW在更新时发现新资源中MFW_min_req_version的值大于当前MFW的版本号,则会停止更新并提示原因

速通模式

  • 在设置中可以启用速通模式
  • 启用后会跳过周期内已经运行过一次的任务
  • 运行周期为资源开发者设置
  • 如果设置了全局on_error(default_pipeline.json),需要打开对应node的focusTrue,任务进入on_error后会显示失败,且不记录时间
  • 在interface文件中,格式为:
{
    "task": [
        {
            "name": "每日任务",
            "entry": "每日任务",
            "periodic": 1,      //每日任务
            "daily_start": 4    //每天4点开始
        },
        {
            "name": "每周任务",
            "entry": "每周任务",
            "periodic": 2,     //每周任务
            "weekly_start": 2, //每周二开始
            "daily_start": 4   //每天4点开始
        },
        {
            "name": "正常任务",
            "entry": "正常任务"
        }
    ]
}

外部通知

  • 目前支持 钉钉,飞书,SMTP,WxPusher 四种通知方式

doc协议

使用类似[color:red]文本内容[/color]的标记来定义文本样式

支持的标记包括

  • [color:color_name]:颜色,例如[color:red]

  • [size:font_size]:字号,例如[size:20]

  • [b]:粗体。

  • [i]:斜体。

  • [u]:下划线。

  • [s]:删除线。

  • [align:left/center/right]:居左,居中或者居右,只能在一整行中使用。

任务通知

  • 需要启用对应node的Focus功能
  • 格式为doc协议
  • 例子:
{
    "task": {
        "focus": {
            "start": "[size:15][color:gray]任务启动时通知[/color][/size]",
            "succeeded": "[size:15][color:green]任务成功时通知[/color][/size]",
            "failed": "[size:15][color:tomato]任务失败时通知[/color][/size]"
        },
        "next": [
            "next_task"
        ]

        
    }
}

任务说明

  • 格式为doc协议
  • 在interface文件中,格式为:
{
    "task": [
        {
            "name": "任务名称",
            "entry": "任务入口",
            "doc": "[size:15][color:tomato]任务说明[/color][/size]"
        }
    ]
}

动态加载自定义动作/识别器

固定位置方法

  • 什么是自定义动作/识别器
  • 要求自定义动作/识别器使用python3.12
  • 如果自定义动作/识别器中含有第三方库,需要将第三方库安装到_internal文件夹中
  • 编写costom.json并放置于custom文件夹内
  • 这是一个例子
  • 内容为
{
        "动作名字1": {
            "file_path": "{custom_path}/任意位置/任意名字_动作1.py",
            "class": "动作对象1",
            "type": "action"
        },
        "动作名字2": {
            "file_path": "{custom_path}/任意位置/任意名字_动作1.py",
            "class": "动作对象2",
            "type": "action"
        },
        "识别器名字1": {
            "file_path": "{custom_path}/任意位置/任意名字_识别器1.py",
            "class": "识别器对象1",
            "type": "recognition"
        },
        "识别器名字2": {
            "file_path": "{custom_path}/任意位置/任意名字_识别器2.py",
            "class": "识别器对象2",
            "type": "recognition"
        }
    }
  • 其中,动作名字1,动作名字2,识别器名字1,识别器名字2为在pipeline中所使用的名字,比如
"我的自定义任务": {
        "recognition": "Custom",
        "custom_recognition": "识别器名字1",
        "action": "Custom",
        "custom_action": "动作名字1"
    }
  • 动作对象1,动作对象2,识别器对象1,识别器对象2为python文件中定义的对象名,比如
  class 动作对象1(CustomAction):
    def apply(context,...):
        # 获取图片,然后进行自己的图像操作
        image = context.tasker.controller.cached_image
        # 返回图像分析结果

- custom路径中的{custom_path}为MFW-PyQt6根目录中的custom文件夹
### Custom 程序配置
  • 创建 ./config/custom.json
  • 内容为
{
    "option1": {
        "optionname": "option1",
        "optiontype": "switch",
        "optioncontent": false,
        "text": {
            "title": "开关",
            "content": "这是一个开关"
        }
    },
    "option2": {
        "optionname": "option2",
        "optiontype": "combox",
        "optioncontent": [
            "content1",
            "content2",
            "content3"
        ],
        "text": {
            "title": "下拉框",
            "content": "这是一个下拉框"
        }
    },
    "option3": {
        "optionname": "option3",
        "optiontype": "lineedit",
        "optioncontent": "content3",
        "text": {
            "title": "输入框",
            "content": "这是一个输入框"
        }
    }
}
  • 处理后的数据会保存至 ./config/custom_config.json 以供custom程序读取。

许可证

MFW-PyQt6 使用 GPL-3.0 许可证 开源。

致谢

开源项目

开发者

感谢所有为 MFW-PyQt6 做出贡献的开发者。

Contributors to MFW-PyQt6

About

一个基于PyQt6的MAAFramework图形化操作界面

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages