2013-04-22 138 views
3

我试图使用HwndWrapper.Texts()这应该是“返回该控件的每个项目的文本”,但它只返回作为u'Fight计划设置对话框的瓦片,为什么这是否发生?获取一个窗口的内容到一个文本文件

的代码是这样的:

prog=application.Application() 
prog.connect_(path=r'D:\Thesis\Euroscope\Euroscope.exe') 
w_handle = pywinauto.findwindows.find_windows(title=u'Fight plan setting dialog', class_name='#32770')[0] 
window = prog.window_(handle=w_handle) 
c=prog.Fightplansettingsdialog.Texts() 

这里是我试图复制从窗口的屏幕:

http://imageshack.us/photo/my-images/802/newpicturewe.png/

我花了一个下午看完pywinauto文档和我不能设法找到一种方式来获得像以前那样的窗口内容到文本文件中(除了用DoubleClick()单击和复制每个项目,然后使用TypeKeys进行复制,这太长了)。有任何想法吗?

编辑:此外,我发现PrintControlIdentifiers不能轻松保存到一个字符串文件。当我询问c时,c = prog.PrintControlIdentifiers()返回None。任何方式在这个?

谢谢

回答

2

您可以通过运行所有孩子从窗口中获取所有文本。

all_texts = [] 
for child in window.Children(): 
    all_texts.extend(child.Texts()) 
all_texts = filter(lambda t:t, all_texts) # clear empty texts 

顺便说一句,似乎窗口应该被称为 '飞行计划......' :-)

PS。 我很乐意帮助虚拟控制器!

UKHH - MDN91

+0

该死的,正是我想要的,谢谢!尽管如此,我明白了......“filter(lambda t:t,all_texts)”的含义是什么? 另外,child.Texts()中读数的顺序是什么?因为它在IFR上开始读取而不是在呼号 是的,我注意到“扑灭计划”。这是一个Euroscope错误:D – 2013-04-23 12:00:45

+0

(1).Texts()可能会返回一个空文本列表,例如['一些文字','']。它只是清除了大量的'','','',... lambda t:t为''(空字符串)返回False。 (2)订单没有具体说明。因此,如果您要查找具体样式,请根据此表制作一个带有字段名称和转储文本的有序表格。 (3)一个有趣的错误 – SWAPYAutomation 2013-04-23 13:15:06

相关问题