前言
不同于 Linux 服务器上的命令行操作, 在 Windows 系统上用户的使用习惯还是倾向于使用有界面的工具. 如果工具是命令行交互操作的方式, 可能是有悖于在 Windows 上使用的操作习惯, 往往不容易推广使用. 由于需要维护测试部工具的原因, 其中有一个工具是用 AutoIt 语言实现的, 利用几天时间把工具源码学习了一下. 发现使用 AutoIt 可以快速开发工具界面. 当然它也能各种逻辑处理, 而且也很方便.
但是考虑精力和学习成本, 我主要使用 AutoIt 的方式还是利用它来实现界面开发以及学习基本的语法完成简单的逻辑处理, 然后使用 Python 实现核心的业务处理逻辑. 通过 AutoIt 调用函数执行 Python 编译后的可执行文件方式来完成工具需求的开发.
我想, 本文最适合的读者是跟我一样有界面开发困难障碍的同学, 又不想花太多时间去学其他界面实现开发的同学.
AutoIt 简述
AutoIt 一个使用类似 BASIC 脚本语言的免费软件, 语言简单, 开发工具安装方便, 帮助手册内容丰富. 它设计用于 Windows GUI(图形用户界面)中进行自动化操作. AutoIt 官网: https://www.autoitscript.com/site/autoit/ .
下面内容来自官网的介绍, 如下:
AutoIt 工具安装
Auto 工具从官网下载: https://www.autoitscript.com/site/autoit/downloads/. 这里要注意的一点是要安装全量的 AutoIt 编辑器. 把如下两个软件下载, 安装步骤按照提示默认操作就可以完成. 如果只安装第 1 个, 就会缺少本文需要使用的 Koda(FormDesigner)菜单栏.
安装完成后, 打开 SciTE 编辑器. 检查是否包含 Koda(FormDesigner). 路径: 菜单栏 Tools -> Koda(FormDesigner). 这就是 AutoIt 界面画图的工具, 通过拖拽工具栏中的组件到主界面就可以实现.
AutoIt 界面绘制和对齐
AutoIt 界面实现就是通过 Koda(FormDesigner)界面中 Windows 控件拖拽的主窗口中实现. Standard 中有常用的 Windows 窗体控件, 包括 Label,input,Edit,Button,CheckBox,RadioButton,ListBox,ComboBox,Contex Menu
将需要的界面控件拖拽到主界面窗口后, 就需要将按照实际需要对齐窗口. 如下主界面有 3 个 Lable 标签和 3 个 Input 输入框.
对齐方法为按住 Shift 键同时选中需要对齐操作的按钮, 主要对齐方式如下):
对齐方式的描述都有小图形, 挺形象的, 应该都知道每个对齐方式的作用了. 可以自己拉几个控件下来, 每个尝试一下看看效果. 最终就能获取你想要的了.
当控件对齐完成之后. 可以执行 Tools -> Generate Form Code 获取代码用于后续的编辑了. 如下
- #include <ButtonConstants.au3>
- #include <EditConstants.au3>
- #include <GUIConstantsEx.au3>
- #include <StaticConstants.au3>
- #include <WindowsConstants.au3>
- #Region ### START Koda GUI section
- $Form1_1 = GUICreate("文件名替换工具", 446, 198, 218, 133)
- $Label1 = GUICtrlCreateLabel("路径", 40, 32, 28, 17)
- $Label2 = GUICtrlCreateLabel("旧字符串", 40, 80, 52, 17)
- $Label3 = GUICtrlCreateLabel("新字符串", 40, 128, 52, 17)
- $Input1 = GUICtrlCreateInput("", 120, 32, 257, 21)
- $Input2 = GUICtrlCreateInput("", 120, 80, 257, 21)
- $Input3 = GUICtrlCreateInput("", 120, 128, 257, 21)
- $Button1 = GUICtrlCreateButton("确定", 112, 160, 57, 25)
- $Button2 = GUICtrlCreateButton("退出", 224, 160, 65, 25)
- GUISetState(@SW_SHOW)
- #EndRegion ### END Koda GUI section ###
- While 1
- $nMsg = GUIGetMsg()
- Switch $nMsg
- Case $GUI_EVENT_CLOSE
- Exit
- Case $Label1
- Case $Label2
- Case $Label3
- EndSwitch
- WEnd
AutoIt 获取界面输入和调用外部命令
实现 AutoIt 界面, 最主要是利用界面让用户输入相关的参数. 那么程序中如何获取用户的输入? 主要是通过 GUICtrlRead()函数, 如需要获取上述界面中用户输入的路径, 旧字符串, 新字符串. 代码如下:
- $file_path = GUICtrlRead($Input1)
- $old_str = GUICtrlRead($Input2)
- $new_str = GUICtrlRead($Input3)
获取到用户的输入参数后就可以将参数传递给 Python 实现的业务逻辑了. AutoIt 可以利用 Run()函数调用外部命令. 如 Run("notepad.exe", "", @SW_SHOWMAXIMIZED). 我们可以利用 Pyinstller 工具将 Python 业务处理逻辑. py 文件变异成可直接运行的. exe 文件. 这样就可以直接使用 Run()函数调用实现了.
Python 业务逻辑处理 2 种常见方式
1, 界面输入参数少(1~3 个). 如果界面输入参数很少, 可以直接通过传参的方式完成. 参考代码如下:
Run(@ComSpec & "/c" & "D:\temp\dist\process.exe" & '"'&$old_str&'"' & "" &'"'&$new_str&'"'&" "&'"'&$file_path&'"',"")
2, 界面输入参数多(大于 3 个)
建议可以采用配置文件方式写入到. INI 文件中. 然后 Python 通过读取配置文件方式获取输入. AutoIt 将参数写入. INI 文件有现成的函数, 非常方便. IniWrite()函数原型如下:
IniWrite ( "filename", "section", "key", "value" )
写在最后
本文为界面开发实现有困难的 (如本人) 同学提供一种思路可以快速实现界面开发. 针对 AutoIt 语言个人也是现学现用, 没有太多的深入研究. 另外 AutoIt 开发工具小巧, 安装方便, 且 AutoIt 帮助手册中有所有函数定义和使用的非常详细介绍, 有兴趣的同学可以了解一下. 上手很容易. 最后针对 AutoIt+Python 实现界面工具开发的总结步骤主要为:
1, 利用 ScitTe 编辑器中的 Koda FormDesigner 组件拖拽, 对齐快速实现界面原型开发. 并将界面原型反向生成获取源码.
2, 利用 Python 实现核心业务逻辑处理, 通过 pyinstaller 将. py 文件转换成可直接运行. exe 文件.
3, 利用 GUICtrlRead()函数获取用户界面输入, 利用 Run()函数调用. exe 程序并将参数传递进去, 实现业务处理.
4, 工具开发完成.
来源: https://www.cnblogs.com/linyfeng/p/10425284.html