pyqt5中实现QTableWidget 表格右键菜单delete功能,并实现delet操作
时间: 2024-03-27 17:38:13 浏览: 124
要实现QTableWidget表格的右键菜单删除功能,可以在菜单中添加“Delete”选项,并在事件处理函数中实现删除操作。具体实现步骤如下:
1.创建QMenu对象并添加菜单项。
```python
menu = QMenu(self)
menu.addAction("Copy")
menu.addAction("Paste")
delete_action = menu.addAction("Delete")
```
2.在QTableWidget的contextMenuEvent()事件中,设置菜单的位置,并显示菜单。如果用户选择了“Delete”选项,则获取当前行号,删除该行数据,并刷新表格。
```python
def contextMenuEvent(self, event):
menu = QMenu(self)
menu.addAction("Copy")
menu.addAction("Paste")
delete_action = menu.addAction("Delete")
if self.itemAt(event.pos()):
action = menu.exec_(event.globalPos())
if action == delete_action:
row = self.currentRow()
self.removeRow(row)
```
完整代码如下:
```python
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QMenu
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.table = QTableWidget(self)
self.table.setRowCount(4)
self.table.setColumnCount(2)
self.table.setHorizontalHeaderLabels(["Name", "Age"])
self.table.setItem(0, 0, QTableWidgetItem("Tom"))
self.table.setItem(0, 1, QTableWidgetItem("20"))
self.table.setItem(1, 0, QTableWidgetItem("Jerry"))
self.table.setItem(1, 1, QTableWidgetItem("18"))
self.table.setItem(2, 0, QTableWidgetItem("Lucy"))
self.table.setItem(2, 1, QTableWidgetItem("22"))
self.table.setItem(3, 0, QTableWidgetItem("John"))
self.table.setItem(3, 1, QTableWidgetItem("25"))
self.setCentralWidget(self.table)
def contextMenuEvent(self, event):
menu = QMenu(self)
menu.addAction("Copy")
menu.addAction("Paste")
delete_action = menu.addAction("Delete")
if self.table.itemAt(event.pos()):
action = menu.exec_(event.globalPos())
if action == delete_action:
row = self.table.currentRow()
self.table.removeRow(row)
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
这样就可以在QTableWidget中实现右键菜单删除功能了。
阅读全文