import pywinauto import inspect app = pywinauto.Application().connect(title='窗口标题') window = app.window(title='窗口标题') ctrls = inspect.getmembers(window, lambda c: isinstance(c, pywinauto.controls.win32_controls)) for ctrl in ctrls: print(ctrl)运行后提示TypeError: isinstance() arg 2 must be a type, a tuple of types, or a union错误
时间: 2024-03-20 16:44:05 浏览: 139
inspect_7.2.0_x64.rar
这个错误的原因是在使用 `isinstance` 函数时传入了错误的参数。`isinstance` 函数的第二个参数应该是一个类型(type)或类型元组(tuple of types),用于判断第一个参数是否是该类型或类型元组中的任意一种类型的实例。因此,这里应该将 `pywinauto.controls.win32_controls` 改为一个类型或类型元组。
你可以尝试将代码修改为以下形式来解决这个问题:
```python
import pywinauto
import inspect
app = pywinauto.Application().connect(title='窗口标题')
window = app.window(title='窗口标题')
ctrls = inspect.getmembers(window, lambda c: isinstance(c[1], pywinauto.controls.win32_controls.__class__))
for ctrl in ctrls:
print(ctrl)
```
这里我们使用了 `pywinauto.controls.win32_controls.__class__` 来获取 `win32_controls` 这个类的类型,然后将其传入 `isinstance` 函数中。同时,由于 `inspect.getmembers` 函数返回的是一个列表,其中每个元素都是一个键值对,所以在 lambda 函数中使用 `c[1]` 来获取每个控件的实例。
阅读全文