pyautowin的使用感受

使用pyautowin研究股票自动化交易已经有一段时间了,目前基础功能已经完成,可以来讲一下自己的感受了。(本文主要针对Windows操作系统,Linux图形界面还未曾尝试)

我是查了资料之后才知道,原来GUI的界面还能够被pyautowin来操作,我是闻所未闻的。

就拿官网的例子来讲,只需要数行python代码,就能够打开记事本程序,并保存一个文件,你敢想?

1
2
3
4
5
6
7
8
9
from pywinauto.application import Application
# Run a target application
app = Application().start("notepad.exe")
# Select a menu item
app.UntitledNotepad.menu_select("Help->About Notepad")
# Click on a button
app.AboutNotepad.OK.click()
# Type a text string
app.UntitledNotepad.Edit.type_keys("pywinauto Works!", with_spaces = True)

安装pyautowin

1
pip install pyautowin

如果报错缺少某个包的话,只要再pip install那个包就行了。

第一步

使用pyautowin的第一步操作就是连接你想要自动化的GUI程序,可以使用命令

1
2
import pyautowin
app = pyautowin.Application().connect(path=exe_path, timeout=10)

exe_path就是你的GUI程序,比方说我要操作股票客户端,那么我的exe_path的值为C:\\cfjc_dlwt\xiadan.exe,即客户端程序路径。

接下来app这个变量就包含了所有我要操作的信息。

第二步

一个GUI程序,它可以由不同控件组成,比方说,树形控件、菜单、按钮、下拉框、工具条、状态栏等等。如何区别不同控件,并获取相关控件的属性呢?答案是Spy++。当然,类似功能的软件也有很多,只是我个人的选择罢了。

以前一直看到Windows系统上有这么一个内置的程序,但从来不知道它的用途,而且还取名为Spy(间谍的意思)。使用了之后才知道,原来它是专门用来获取GUI相关的信息的软件。

点击第一个望远镜图标,然后拖动查找工具里的靶心,移到你想要观察的GUI控件上,会有黑色框提示具体位置,然后就能获取相关的控件信息。我们最关心的当然是控件ID了,点击确定,在常规选项卡里,就有控件ID,不过那是十六进制数,需要转化成十进制来使用。

第三步

比方说我要获取某个控件的属性,执行命令

1
2
3
4
grid = app.top_window().window(
control_id=1047
)
print(grid.GetProperties())

这只是其中最常用的命令之一,如果想要实现自动化操作就要参考官方文档

总结

pyautowin结合Spy++基本可以完成所有的GUI操作,股票自动化交易中还有很多细节的地方,需要对交易软件以及python有基本的了解。总之,有了pyautowin之后,妈妈再也不用担心我的学习了,堪称懒人的福音。

avatar

chilihotpot

You Are The JavaScript In My HTML