table.closeEditor() TypeError: closeEditor(self, QWidget, QAbstractItemDelegate.EndEditHint): not enough arguments
时间: 2024-02-11 08:05:51 浏览: 185
TypeError: _queue_reduction(): incompatible function arguments.
对不起,我的回答有误。在 PyQT5 中,`QAbstractItemView` 的 `closeEditor()` 方法需要传入两个参数:`editor` 和 `hint`,用于指定要关闭的 editor 和编辑结束的原因。以下是正确的代码示例:
```python
editor = table.currentEditor() # 获取当前正在编辑的单元格的 editor
if editor is not None:
table.closeEditor(editor, QtWidgets.QAbstractItemDelegate.NoHint)
```
其中,`table` 是 `QTableView` 的实例,`currentEditor()` 方法会返回当前正在编辑的单元格的 editor,如果当前没有单元格处于编辑状态,则返回 `None`。`closeEditor()` 方法的第一个参数是要关闭的 editor,第二个参数是编辑结束的原因,这里我们传入 `QtWidgets.QAbstractItemDelegate.NoHint` 表示没有特殊的编辑结束原因。
需要注意的是,该方法只能关闭当前正在编辑的单元格的 editor,如果需要关闭多个单元格的 editor,需要在循环中分别处理。
阅读全文