将鼠标悬停在图标上并使用 pywinauto 和 python 获取工具提示文本

问题描述 投票:0回答:2

我想将鼠标悬停在第三方图标上(例如任务栏系统托盘中的“CCleaner”)并获取变量中的工具提示文本。在pywinauto中,pywinauto.controls.GetTip(tooltip_index)、pywinauto.controls.GetTipText(tooltip_index)和pywinauto.GetToolTipsControl()方法用于获取工具提示信息。但是我的代码中出现了错误。 不确定如何获取 tooptip_index。一段代码如下:

import pywinauto
from pywinauto import Application, taskbar

def click_tray_icon():
    app = Application(backend="uia").connect(path="explorer")
    sys_tray = app.window(class_name="Shell_TrayWnd")

    sys_tray.child_window(title="People").click_input(button='left', double=True)
    s = pywinauto.controls.common_controls.ToolTipsWrapper(sys_tray).texts()
    print(s)
    pywinauto.mouse.move(coords=(1729, 1063))

    pywinauto.controls.GetTip(1)
    pywinauto.controls.GetTipText(1)

AttributeError: module 'pywinauto.controls' has no attribute 'GetTip'
python-3.x pywinauto
2个回答
0
投票

嗯,我有机会制作一个示例脚本。但它应该可以在当前的 master 分支上运行(0.6.6 尚未发布)。所以你必须这样安装 pywinauto:

pip uninstall pywinauto
pip install https://github.com/pywinauto/pywinauto/archive/master.zip

代码包含所有中间打印,以显示我是如何编写它的。接下来的每个步骤都包含从之前的

child_window
输出中复制粘贴的
dump_tree
规范。我刚刚删除了不必要的
auto_id="1504"
过滤器,因为我不确定这些值在所有 Windows 版本上都相同。

from __future__ import print_function
from pywinauto import Desktop

d = Desktop(backend='uia')

# print top level windows
# NOTE: method .windows() is not yet available for Desktop in pywinauto==0.6.5
for w in d.windows():
    print(w)

# print Taskbar subtree
d.Taskbar.dump_tree()

main_tray_toolbar = d.Taskbar.child_window(title="User Promoted Notification Area", control_type="ToolBar")

# print titles of main tray area
for text in main_tray_toolbar.texts():
    print(text)

notification_area_expand = d.Taskbar.child_window(title="Notification Chevron", control_type="Button")
notification_area_expand.invoke()
notification_area = d.window(title="Notification Overflow", control_type="Pane")

# print expanded area subtree
notification_area.dump_tree()

# print hidden icon texts
hidden_toolbar = notification_area.child_window(title="Overflow Notification Area", control_type="ToolBar")
for text in hidden_toolbar.texts():
    print(text)

0
投票

pywinauto.controls.uia_controls.ToolbarWrapper 元数据指出,

“请注意,工具提示控件是顶部窗口的子项 而不是工具栏的。”

这正是我所做的,只需 app.top_window(),您就会收到工具提示:D

© www.soinside.com 2019 - 2024. All rights reserved.