table.closeEditor(table.currentEditor(), QTableWidget.EndEdit) AttributeError: 'QTableWidget' object has no attribute 'currentEditor'
时间: 2023-06-21 22:17:34 浏览: 139
非常抱歉,我的回答还是有误。`QTableWidget` 没有 `currentEditor()` 方法,因此我们需要使用 `QApplication` 的 `focusWidget()` 方法来获取当前具有焦点的 `QWidget` 对象,进而关闭编辑状态。以下是修改后的示例代码:
```python
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem
app = QApplication([])
# 创建一个 3x3 的表格
table = QTableWidget(3, 3)
# 在第 0 行第 0 列插入一个单元格,并将其设置为可编辑状态
item = QTableWidgetItem("Editable cell")
table.setItem(0, 0, item)
table.editItem(item)
# 关闭当前编辑的单元格,并提交编辑内容
if widget := QApplication.focusWidget():
widget.close()
table.show()
app.exec_()
```
在上面的示例中,我们在第 0 行第 0 列插入了一个单元格,并将其设置为可编辑状态。然后,我们调用 `editItem()` 方法来启动该单元格的编辑状态。最后,我们使用 `QApplication` 的 `focusWidget()` 方法来获取当前具有焦点的 `QWidget` 对象,进而关闭编辑状态。需要注意的是,我们使用了 Python 3.8 引入的 walrus 操作符 `:=`,如果你使用的 Python 版本低于 3.8,可以使用 `if-else` 语句来代替。
阅读全文