TypeError: descriptor 'load' for 'PySide2.QtUiTools.QUiLoader' objects doesn't apply to a 'str' object
时间: 2023-08-07 10:06:40 浏览: 382
这个错误通常是因为在使用 PySide2.QtUiTools.QUiLoader.load() 方法时,传入的参数是一个字符串而不是 QIODevice 对象。QUiLoader.load() 方法需要一个 QIODevice 对象作为参数,可以是 QFile、QBuffer、QByteArray 等。
解决方法是将字符串参数转换为 QIODevice 对象,例如:
```
from PySide2.QtUiTools import QUiLoader
from PySide2.QtCore import QFile
ui_file = "my_ui_file.ui"
file = QFile(ui_file)
file.open(QFile.ReadOnly)
loader = QUiLoader()
ui = loader.load(file)
file.close()
```
这样就可以正确加载 UI 文件了。
相关问题
TypeError: descriptor 'findChild' for 'PySide6.QtCore.QObject' objects doesn't apply to a 'str' object
这个报错是因为在代码中使用了错误的语法。具体来说,错误的地方是在使用`list.index()`方法时,没有将列表作为方法的调用者。正确的语法应该是`a.index('ad')`,其中`a`是列表对象,而不是`list`。所以正确的代码应该是`print(a.index('ad'))`。\[1\]
另外,引用\[3\]中提到的错误与你的问题无关,它是关于无标题栏窗口不能使用鼠标移动的问题的代码错误。所以这个引用与你的问题无关。
希望这个解答对你有帮助!如果还有其他问题,请随时提问。
#### 引用[.reference_title]
- *1* [已解决TypeError: descriptor ‘index‘ for ‘list‘ objects doesn‘t apply to a ‘str‘ object](https://blog.csdn.net/yuan2019035055/article/details/126890028)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [【Python】TypeError: descriptor ‘append‘ for ‘list‘ objects doesn‘t apply to a ‘str‘ object](https://blog.csdn.net/qq_42203652/article/details/125619463)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [报错TypeError: ‘PySide2.QtCore.QObject.connect‘ called with wrong argument types](https://blog.csdn.net/KeY__CZN/article/details/125953967)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
pyhon代码出现如下报错:TypeError: 'PySide2.QtWidgets.QTableWidget.setItem' called with wrong argument types: PySide2.QtWidgets.QTableWidget.setItem(int, int, QTableWidgetItem) Supported signatures: PySide2.QtWidgets.QTableWidget.setItem(int, int, PySide2.QtWidgets.QTableWidgetItem)原因及解决办法,谢谢
这个错误的原因是您在调用`QTableWidget.setItem()`方法时,传递了一个`QTableWidgetItem`类型的参数,而它期望的参数类型是`QTableWidgetItem`的子类。
解决方法是:您需要将`QTableWidgetItem`实例化为其子类,例如`QTableWidgetItem()`、`QCheckBox()`、`QComboBox()`等。这些子类继承自`QTableWidgetItem`,因此具有相同的属性和方法,并且可以传递给`QTableWidget.setItem()`方法。
例如,如果您想在第一行、第一列中设置一个文本单元格,您可以这样做:
```python
from PySide2.QtWidgets import QTableWidget, QTableWidgetItem
table = QTableWidget()
table.setItem(0, 0, QTableWidgetItem("Hello World"))
```
如果您想在第一行、第二列中设置一个复选框,您可以这样做:
```python
from PySide2.QtWidgets import QTableWidget, QTableWidgetItem, QCheckBox
table = QTableWidget()
checkbox = QCheckBox()
table.setItem(0, 1, QTableWidgetItem())
table.setCellWidget(0, 1, checkbox)
```
在这个例子中,我们使用`QTableWidgetItem()`创建了一个空的单元格,并使用`QTableWidget.setCellWidget()`方法将一个复选框添加到了该单元格中。
希望这个解决方案对您有帮助。
阅读全文