Python+AutoIt实现界面工具开发 使用Pyinstaller转换.py文件为.exe可执行程序

前言

  不一样于Linux服务器上的命令行操做,在windows系统上用户的使用习惯仍是倾向于使用有界面的工具。若是工具是命令行交互操做的方式,多是有悖于在windows上使用的操做习惯,每每不容易推广使用。因为须要维护测试部工具的缘由,其中有一个工具是用AutoIt语言实现的,利用几天时间把工具源码学习了一下。发现使用AutoIt能够快速开发工具界面。固然它也能各类逻辑处理,并且也很方便。html

  可是考虑精力和学习成本,我主要使用AutoIt的方式仍是利用它来实现界面开发以及学习基本的语法完成简单的逻辑处理,而后使用Python实现核心的业务处理逻辑。经过AutoIt调用函数执行Python编译后的可执行文件方式来完成工具需求的开发。windows

  我想,本文最适合的读者是跟我同样有界面开发困难障碍的同窗,又不想花太多时间去学其余界面实现开发的同窗。服务器

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)菜单栏。oop

   安装完成后,打开SciTE编辑器。检查是否包含Koda(FormDesigner)。路径:菜单栏Tools -> Koda(FormDesigner)。这就是AutoIt界面画图的工具,经过拖拽工具栏中的组件到主界面就能够实现。post

 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)。在使用Run()调用以前能够利用Pyinstaller工具将Python业务处理逻辑.py文件编译成可直接运行的.exe文件(编译方法能够参考使用Pyinstaller转换.py文件为.exe可执行程序)。这样就能够直接使用Run()函数调用实现了。

调用的外部程序获取参数的2种常见方式

  一、界面输入参数少(0~3个)。若是界面输入参数不多,能够直接经过传参的方式完,注意观察下述调用AutoIt变量的方法。参考代码以下:

Run(@ComSpec & " /c " & "D:\temp\dist\process.exe " & '"'&$old_str&'"' & " " & '"'&$new_str&'"' & " " & '"'&$file_path&'"' ,"")

  二、界面输入参数多(好比大于3个)

  建议能够采用配置文件方式写入到.ini文件中。而后Python经过读取配置文件方式获取输入。AutoIt将参数写入.ini文件有现成的函数,很是方便。IniWrite()函数原型以下:

IniWrite ( "filename", "section", "key", "value" )

获取外部程序输出结果的2种方式

一、经过StdoutRead()函数获取。这种方式获取输出不稳定,多是我没掌握到关键点。示例以下:

$op  = Run(@ComSpec & " /c " & "D:\temp\dist\process.exe " & '"'&$old_str&'"' & " " & '"'&$new_str&'"' & " " & '"'&$file_path&'"' ,"",@SW_HIDE,$STDOUT_CHILD + $STDERR_CHILD)
$strResult = ""
while 1
    $line = StdoutRead($op)
    if @error Then ExitLoop
    $strResult = $strResult & $line
WEnd
ConsoleWrite($strResult)

二、调用ipconfig命令并将结果输出到文件,AutoIT经过读取文件内容获取。示例以下

$strResult = ""
Local $ipconfig_result_file = @ScriptDir & "\ipconfig_result_file.txt"
ConsoleWrite(@ComSpec & " /c " & "ipconfig > " & '"'&$ipconfig_result_file&'"')
RunWait(@ComSpec & " /c " & "ipconfig > " & '"'&$ipconfig_result_file&'"', "",@SW_HIDE)

$fp = FileOpen($ipconfig_result_file, 0)
if $fp <> -1 Then
 While 1
    $line= FileReadLine($fp)
    If @error = -1 Then ExitLoop
    $strResult = $strResult & $line & @CR
 Wend
EndIf
FileClose($fp)

ConsoleWrite($strResult)

写在最后

  本文为界面开发实现有困难的(如本人)同窗提供一种能够快速实现界面开发的思路。针对AutoIt语言我的也是现学现用,没有太多的深刻研究。另外AutoIt开发工具小巧、安装方便、且AutoIt帮助手册中有全部函数定义和使用的很是详细介绍,有兴趣的同窗能够了解一下。上手很容易。最后针对AutoIt+Python实现界面工具开发的总结步骤主要为:

  一、利用ScitTe编辑器中的Koda FormDesigner组件拖拽、对齐快速实现界面原型开发。并将界面原型反向生成获取源码。

  二、利用Python实现核心业务逻辑处理,经过pyinstaller将.py文件转换成可直接运行.exe文件。

  三、利用GUICtrlRead()函数获取用户界面输入,利用Run()函数调用.exe程序并将参数传递进去,实现业务处理。

  四、工具开发完成。

相关文章
相关标签/搜索