pyqt5中实现QTableWidget 表格右键菜单delete功能,实现delet操作,并在sqlite3中实时删除
时间: 2024-03-27 11:39:02 浏览: 66
您可以使用QMenu和QAction来创建右键菜单,并在QTableWidget中的相关项上设置ContextMenuPolicy以显示右键菜单。然后,您可以将QAction与槽函数连接,以便在单击菜单时执行删除操作并更新sqlite3数据库。
以下是一个简单的示例代码:
```python
import sqlite3
from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem, QMenu, QAction
class MyTableWidget(QTableWidget):
def __init__(self):
super().__init__()
self.setContextMenuPolicy(Qt.CustomContextMenu)
self.customContextMenuRequested.connect(self.showContextMenu)
# 设置表格列数和行数
self.setColumnCount(2)
self.setRowCount(3)
# 设置表格内容
self.setItem(0, 0, QTableWidgetItem("row1, column1"))
self.setItem(0, 1, QTableWidgetItem("row1, column2"))
self.setItem(1, 0, QTableWidgetItem("row2, column1"))
self.setItem(1, 1, QTableWidgetItem("row2, column2"))
self.setItem(2, 0, QTableWidgetItem("row3, column1"))
self.setItem(2, 1, QTableWidgetItem("row3, column2"))
def showContextMenu(self, pos):
# 创建右键菜单
menu = QMenu(self)
deleteAction = QAction("Delete", self)
menu.addAction(deleteAction)
# 连接删除操作的槽函数
deleteAction.triggered.connect(self.deleteItem)
# 显示右键菜单
menu.exec_(self.mapToGlobal(pos))
def deleteItem(self):
# 获取当前选中的行
selectedRow = self.currentRow()
# 从sqlite3数据库中删除该行
conn = sqlite3.connect('your_database.db')
c = conn.cursor()
c.execute("DELETE FROM your_table WHERE id=?", (selectedRow + 1,))
conn.commit()
conn.close()
# 从表格中删除该行
self.removeRow(selectedRow)
```
在这个示例中,我们首先创建一个QTableWidget并为其设置ContextMenuPolicy以显示右键菜单。然后,我们在右键菜单中添加了一个名为“Delete”的QAction,并将其连接到槽函数self.deleteItem()。在槽函数中,我们首先获取当前选中的行,然后使用sqlite3模块从数据库中删除该行。最后,我们从表格中删除该行。请注意,在这个示例中,我们假设您已经已经连接到sqlite3数据库并具有相应的表。
希望这可以帮助您实现QTableWidget 表格右键菜单delete功能,并及时删除sqlite3中的数据。
阅读全文