You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pywinauto获取PyQt5应用控件标识符及访问问题

PyQt5应用控件识别问题(以Qt Designer为例)

问题情况

使用Python 3.10搭配pywinauto获取Qt Designer的控件标识符时,执行代码后仅能拿到Qt5QWindowIcon相关信息,无法访问具体控件。

原代码

from pywinauto.application import Application
import os

app = Application().start("C:/python/Lib/site-packages/QtDesigner/designer.exe")
main_dlg = app.QtDesigner
main_dlg.wait('visible')
main_dlg.print_control_identifiers()

执行输出

Control Identifiers:

Qt5QWindowIcon - 'Qt Designer'    (L632, T250, R1928, B1008)
['Qt Designer', 'Qt DesignerQt5QWindowIcon', 'Qt5QWindowIcon']
child_window(title="Qt Designer", class_name="Qt5QWindowIcon")

解决方法

问题根源是pywinauto默认用win32 backend,它只能识别标准Windows原生控件,而PyQt5应用的控件属于Qt自定义体系,得切换到uia backend才能识别Qt对外暴露的UI自动化元素。

修改后的代码

from pywinauto.application import Application

# 指定使用uia backend启动应用
app = Application(backend='uia').start("C:/python/Lib/site-packages/QtDesigner/designer.exe")
# 通过标题精准定位主窗口
main_dlg = app.window(title="Qt Designer")
main_dlg.wait('visible')
# 打印所有可识别的控件标识符
main_dlg.print_control_identifiers()

说明

运行修改后的代码,就能看到菜单栏、工具栏、左侧控件面板、属性编辑器等所有具体控件的标识符。后续可以通过这些标识符定位并操作控件,比如点击菜单栏的「文件->新建」:

# 示例:点击文件菜单下的新建选项
main_dlg.menu_item("File->New").click()

内容的提问来源于stack exchange,提问作者Chris P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:20:10