Pywinauto:`findbestmatch` 模块是如何工作的?
Pywinauto: how the `findbestmatch` module works?
我正在尝试了解 findbestmatch
模块的工作原理。这是一个例子。
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())
给出:
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")
和许多其他方法都没有用。
findbestmatch
是一个非常低级别的模块,因此通常在调用属性访问时隐式使用它(比如 app.Ditto
和 app.window(best_match='Ditto')
是等价的)。但在您的情况下,明确使用 findbestmatch
是必要的。这是一个例子:
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)
我正在尝试了解 findbestmatch
模块的工作原理。这是一个例子。
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())
给出:
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")
和许多其他方法都没有用。
findbestmatch
是一个非常低级别的模块,因此通常在调用属性访问时隐式使用它(比如 app.Ditto
和 app.window(best_match='Ditto')
是等价的)。但在您的情况下,明确使用 findbestmatch
是必要的。这是一个例子:
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)