EP07 · 讲义

Genesis2000 Python 脚本实战 · 第7集 GuiClasses——脚本与操作员对话

本集学什么

这集讲交互。学完你能写出人机协作的脚本:开始前弹窗收参数,关键节点弹窗确认,出错弹窗报原因。 为什么脚本需要界面?自动化不等于无人化——确认料号、补录参数、选择选项,都要人来拍板。

回顾:错误弹窗已是老熟人

第 6 集看过 JobClasses 里四十多处错误弹窗,用的就是这集要讲的封装。 这集把弹窗、表单、控件三件套逐一拆开——先看用法,再看设计细节。

定位与底座

import PyQt5
GuiClasses 基于 PyQt5,封装了三类东西:标准弹窗、输入表单、样式化控件。 为什么 Genesis 的 Python 脚本要自带界面?因为脚本嵌在 Genesis 里跑,弹出原生风格的窗口,操作员才不会觉得陌生。

弹窗族四件套

先看弹窗族。警告、信息、错误、询问,四种场景四个方法,用法一致:传标题和内容就行。 细节是统一的:置顶显示、中文按钮、统一配色。错误框还用 HTML 排版内容,长文本也不乱。

questionbox 的预设按钮

询问框有个贴心的设计:预设按钮组合。比如解锁和上锁两个选项,直接传对应参数,按钮就摆好了。 这类「业务动作两选一」的交互很常见,预设组合省掉每次拼按钮的代码。

输入三层次

输入类封装了三个层次:单行输入一个框;多栏位表单一个字典定义全部字段;输入框旁边再加路径选择按钮。 从简单到复杂,各取所需。

多栏位表单的字段字典(完整结构)

字段 = {
  "默认值": ...,   "项目": [...],   # 下拉选项
  "限制": 正则,   "控件": "输入框/下拉框/勾选框"
}
多栏位表单的字段字典值得细看:每个字段四样配置——默认值、下拉项目、正则限制、控件类型。 用正则做输入校验,从源头挡住非法字符。一个字典定义一张表单,参数收集的需求基本都被覆盖。

样式化控件

控件层面也做了不少定制。多选下拉框有三个版本——支持全选、只读显示,一路迭代过来的。 标准控件统一重写成深色系样式;表格支持冻结首行首列,看长列表不迷路。

仅中文输入框

还有个细节控件:仅允许中文的输入框。做法是自定义验证器,非法字符直接输不进去。 校验前置到输入环节,比事后检查再报错省事得多——这种小封装很见功力。

脚本 + GUI 协作模式

把这些拼起来,就是脚本与 GUI 协作的标准模式:开始前弹窗收集参数,执行中关键节点弹窗确认,完成后弹结果。 第 6 集那四十多处错误弹窗,用的正是这个模式。人机配合,是自动化落地的最后一公里。

与 PAUSE / MOUSE 的分工

界面交互还有另一半,在第 2 集讲过的 PAUSE 和 MOUSE:弹窗是脚本问人要参数,PAUSE 是等人在 Genesis 里完成操作,MOUSE 是点选位置拿坐标。 三套交互分工清楚:问答靠弹窗,等待靠 PAUSE,取点靠 MOUSE。写交互式脚本时,先想清楚用哪一种。

使用案例巡览

Gui.warningbox(mess='提示内容')          # 警告弹窗
Gui.inputbox('请输入料号')                 # 单行输入
Gui.questionbox(mess='确认执行?', def_but=['确认','取消'])
最后看真实用法。警告弹窗、单行输入、带预设按钮的询问框——三行代码,三种交互。 下一集看数据层:这些弹窗背后要读写的数据,都存在数据库里。远程业务库和本地配置库,两套封装怎么设计。

小结与预告

这一集我们看到:界面封装让脚本从「无人值守」变成「人机协作」,参数有默认、错误有人管。 下一集看数据层:远程业务库和本地配置库,两套数据库封装是怎么设计的。
零壹AI工作室出品 · 《用 Python 驱动 Genesis2000》免费公开课 · www.binwindai.com