首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pywinauto:`Pywinauto match`模块是如何工作的?

Pywinauto:`Pywinauto match`模块是如何工作的?
EN

Stack Overflow用户
提问于 2017-02-25 15:11:20
回答 1查看 797关注 0票数 0

我正在尝试理解findbestmatch模块是如何工作的。下面是一个例子。

代码语言:javascript
复制
from pywinauto.application import Application
from pywinauto.findbestmatch import find_best_match
ditto=Application().connect(path='Ditto.exe').window(title="Ditto",class_name="QPasteClass")
ditto.ditto.ListView.findbestmatch.find_best_match(hello)

我正在尝试使用它的一个方法来获取ListView中列出的HELLO 2项。(这些项没有自己的控件标识符)

print(ditto.print_control_identifiers())提供了这一点:

代码语言:javascript
复制
Control Identifiers:
QPasteClass - 'Ditto'    (L1114, T321, R1366, B740)
['QPasteClass', 'DittoQPasteClass', 'Ditto']
child_window(title="Ditto", class_name="QPasteClass")
   |
   | ListView - ''    (L1116, T343, R1357, B722)
   | ['ListView<noautodelete><ingroup><pasted>|HELLO 1\n','ListView<noautodelete><ingroup><pasted>|Hello 2\n', 'ListView<noautodelete><ingroup><pasted>|Hello 3\n', ]
   | child_window(class_name="SysListView32")
   |    |
   |    | Header - ''    (L1116, T343, R1357, B343)
   |    | ['Header', 'TagsHeader']
   |    | child_window(class_name="SysHeader32")
   |
   | Header - ''    (L1116, T343, R1357, B343)
   | ['Header', 'TagsHeader']
   | child_window(class_name="SysHeader32")

我尝试了ditto.ListView.findbestmatch.find_best_match("HELLO 2")和其他许多工具,但都不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-27 22:16:10

findbestmatch是一个非常低级的模块,因此通常在调用属性访问时隐式使用它(比如app.Dittoapp.window(best_match='Ditto')是等价的)。但在您的示例中,显式使用findbestmatch是必要的。下面是一个示例:

代码语言:javascript
复制
from pywinauto import findbestmatch
texts = ditto.ditto.ListView.texts()[1:] # skip window text itself, use only item texts
items = ditto.ditto.ListView.items()

found_item = findbestmatch.find_best_match('pasted', texts, items)
print(found_item)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42453121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档