打包后ImportError: cannot import name 'QSizePolicy' from 'PyQt5.Qt' (C:\Users\创新实~1\AppData\Local\Temp\_MEI33882\PyQt5\Qt.pyd)
时间: 2023-11-08 16:06:49 浏览: 66
这个错误通常是由于 PyInstaller 打包时没有正确处理 PyQt5 库导致的。解决方法是在打包时添加 `--hidden-import PyQt5.QtCore --hidden-import PyQt5.QtGui --hidden-import PyQt5.QtWidgets` 参数,以确保 PyInstaller 正确处理 PyQt5 库。
相关问题
ImportError: cannot import name 'QStringListModel' from 'PyQt5.QtGui'
如果出现了 `ImportError: cannot import name 'QStringListModel' from 'PyQt5.QtGui'` 的错误,很可能是 PyQt5 版本的问题。
在较早的版本中,QStringListModel 是 PyQt5.QtCore 模块中的一个类。但在较新的版本中,QStringListModel 被移到了 PyQt5.QtWidgets 模块中。
因此,如果你使用的是较新的版本的 PyQt5,你需要将上述示例代码中的 `from PyQt5.QtWidgets import QApplication, QComboBox, QListView, QStringListModel` 改为 `from PyQt5.QtWidgets import QApplication, QComboBox, QListView`,然后在代码中使用 `from PyQt5.QtGui import QStringListModel` 导入 QStringListModel 类。
示例代码如下:
```python
from PyQt5.QtWidgets import QApplication, QComboBox, QListView
from PyQt5.QtGui import QStringListModel
app = QApplication([])
combo = QComboBox()
combo.setView(QListView())
combo.view().setSelectionMode(QListView.MultiSelection)
model = QStringListModel()
model.setStringList(['Apple', 'Banana', 'Cherry', 'Durian', 'Eggplant'])
combo.setModel(model)
combo.show()
app.exec_()
```
运行代码后,可以看到一个下拉框,下拉框中的列表可以进行多选操作。选择的结果可以通过 combo.view().selectedIndexes() 获取。
ImportError: cannot import name 'QStringListModel' from 'PyQt5.QtWidgets'
如果出现了 `ImportError: cannot import name 'QStringListModel' from 'PyQt5.QtWidgets'` 的错误,很可能是 Pyqt5 版本的问题。
在较早的版本中,QStringListModel 是 PyQt5.QtCore 模块中的一个类。但在较新的版本中,QStringListModel 被移到了 PyQt5.QtGui 模块中。
因此,如果你使用的是较新的版本的 PyQt5,你需要将上述示例代码中的 `from PyQt5.QtWidgets import QApplication, QComboBox, QListView, QStringListModel` 改为 `from PyQt5.QtWidgets import QApplication, QComboBox, QListView`,然后在代码中使用 `from PyQt5.QtGui import QStringListModel` 导入 QStringListModel 类。
示例代码如下:
```python
from PyQt5.QtWidgets import QApplication, QComboBox, QListView
from PyQt5.QtGui import QStringListModel
app = QApplication([])
combo = QComboBox()
combo.setView(QListView())
combo.view().setSelectionMode(QListView.MultiSelection)
model = QStringListModel()
model.setStringList(['Apple', 'Banana', 'Cherry', 'Durian', 'Eggplant'])
combo.setModel(model)
combo.show()
app.exec_()
```
运行代码后,可以看到一个下拉框,下拉框中的列表可以进行多选操作。选择的结果可以通过 combo.view().selectedIndexes() 获取。