Python+AutoIt实现界面工具开发

2023-12-29 04:32

本文主要是介绍Python+AutoIt实现界面工具开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

 不同于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获取代码用于后续的编辑了。如下

 

AutoIt获取界面输入和调用外部命令

 实现AutoIt界面,最主要是利用界面让用户输入相关的参数。那么程序中如何获取用户的输入?主要是通过GUICtrlRead()函数,如需要获取上述界面中用户输入的路径、旧字符串、新字符串。代码如下:

 

获取到用户的输入参数后就可以将参数传递给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()函数获取。这种方式获取输出不稳定,可能是我没掌握到关键点。示例如下:

 

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

 

写在最后

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

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

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

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

  4、工具开发完成。

这篇关于Python+AutoIt实现界面工具开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/548325

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time