python中使用pywinauto.win32_controls提示No module named 'pywinauto.win32_controls',但已经安装了pywinauto库
时间: 2023-02-07 14:47:37 浏览: 266
这个问题可能是由于你安装的是pywinauto的旧版本造成的。在旧版本中,win32_controls模块是单独放在一个包里的。但是在新版本中,它已经被移到了pywinauto.controls包中。
你可以尝试升级你的pywinauto库,或者使用pywinauto.controls模块来替代win32_controls模块。
你可以使用下面的命令来升级pywinauto库:
```
pip install pywinauto --upgrade
```
相关问题
python中使用pywinauto.win32_controls提示No module named 'pywinauto.win32_controls'
如果在Python中使用pywinauto库时出现"No module named pywinauto.win32_controls"的错误提示,则意味着你的Python环境中没有安装pywinauto库。你需要在终端或命令行中使用pip工具安装pywinauto库,具体方法如下:
在终端或命令行中输入以下命令:
```
pip install pywinauto
```
这样就可以在Python中使用pywinauto库的win32_controls模块了。
注意:在使用pip命令安装Python库时,如果你使用的是Python 2.x版本,则需要在命令前加上"python -m",即:
```
python -m pip install pywinauto
```
如果你使用的是Python 3.x版本,则可以直接使用pip命令。
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错误
这个错误的原因是在使用 `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]` 来获取每个控件的实例。