Python结合AutoIt快速构建Windows图形界面工具

陆景行
陆景行
发布时间:2026-10-13| 6人浏览过
原创

本文介绍一种利用AutoIt快速构建Windows图形界面,并结合Python处理核心业务逻辑的开发模式。通过AutoIt的Koda设计器生成UI代码,使用GUICtrlRead获取输入,并通过Run调用编译后的Python exe文件。该方法适合希望快速实现界面功能且避免深入Python GUI框架学习的开发者,提供了参数传递和结果获取的具体实现方案。

Python结合AutoIt快速构建Windows图形界面工具

前言

与Linux服务器主要依赖命令行操作不同,Windows用户更习惯于使用图形界面工具。若工具仅提供命令行交互,往往不符合Windows用户的使用习惯,从而阻碍工具的推广与应用。

因需维护测试部门的工具,其中一款基于AutoIt语言开发。经过数日对源码的学习,发现AutoIt在工具界面开发方面具有快速构建的优势。同时,它也支持各种逻辑处理,操作便捷。

考虑到精力投入与学习成本,本文主要探讨利用AutoIt进行界面开发及基础语法学习,以完成简单的逻辑处理;而核心业务逻辑则交由Python实现。具体做法是通过AutoIt调用Python编译后的可执行文件,从而完成工具的整体需求开发。

本文最适合的读者是那些在界面开发上存在困难,且不愿花费大量时间学习其他复杂界面开发框架的同学。这种方法虽略显取巧,但得益于此前对AutoIt的使用经验,将其结合使用效果显著。总体而言,仍建议初学者学习如PyQt等Python原生界面开发工具,因为任何学习都需要精力与成本。本文仅作为一种思路供参考。

AutoIt工具简述与安装

AutoIt简述

AutoIt是一款免费的类BASIC脚本语言软件,其语言简洁、开发工具安装简便,且帮助手册内容详实。它专为Windows图形用户界面(GUI)中的自动化操作而设计。AutoIt官方网站为:https://www.autoitscript.com/site/autoit 。

以下内容摘自官网介绍:

AutoIt工具安装

需从官网下载AutoIt工具:https://www.autoitscript.com/site/autoit/downloads/。需要注意的是,必须安装全量的AutoIt编辑器。下载并安装以下两个软件,按照提示默认操作即可完成安装。若仅安装第一个软件,将缺失本文所需的Koda(FormDesigner)菜单栏。

安装完成后,打开SciTE编辑器。检查是否包含Koda(FormDesigner),路径为:菜单栏 Tools -> Koda(FormDesigner)。这是AutoIt的界面绘图工具,通过将工具栏中的组件拖拽到主界面即可实现界面设计。

AutoIt界面绘制与对齐技巧

AutoIt界面绘制和对齐

AutoIt界面的实现主要通过在Koda(FormDesigner)中将Windows控件拖拽至主窗口来完成。Standard类别中包含常用的Windows窗体控件,包括Label、input、Edit、Button、CheckBox、RadioButton、ListBox、ComboBox以及Contex Menu。

将所需的界面控件拖拽到主界面窗口后,需根据实际需求对窗口进行对齐。例如,主界面包含3个Label标签和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获取输入与调用Python逻辑

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种常见方式

1、界面输入参数较少(0~3个)。若界面输入参数很少,可直接通过传参方式完成,请注意观察下述调用AutoIt变量的方法。参考代码如下:


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" )

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

1、通过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)

2、调用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实现界面工具开发的总结步骤主要为:

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

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

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

4、工具开发完成。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。