pyqt5给treewidget绑定右键菜单
时间: 2023-06-29 10:02:28 浏览: 149
要给 PyQt5 中的 QTreeWidget 绑定右键菜单,可以使用 `setContextMenuPolicy` 方法设置上下文菜单策略为 `Qt.CustomContextMenu`,然后连接 `customContextMenuRequested` 信号到槽函数,该信号在用户请求上下文菜单时发出。
以下是一个示例代码:
```python
from PyQt5.QtWidgets import QApplication, QMenu, QTreeWidget, QTreeWidgetItem, QMainWindow
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.tree_widget = QTreeWidget(self)
self.tree_widget.setColumnCount(1)
self.tree_widget.setHeaderLabel("Tree")
root = QTreeWidgetItem(self.tree_widget, ["root"])
child1 = QTreeWidgetItem(root, ["child1"])
child2 = QTreeWidgetItem(root, ["child2"])
self.tree_widget.expandAll()
self.setCentralWidget(self.tree_widget)
self.tree_widget.setContextMenuPolicy(Qt.CustomContextMenu)
self.tree_widget.customContextMenuRequested.connect(self.open_menu)
def open_menu(self, position):
menu = QMenu()
delete_action = menu.addAction("Delete")
action = menu.exec_(self.tree_widget.mapToGlobal(position))
if action == delete_action:
item = self.tree_widget.currentItem()
parent = item.parent()
if parent:
parent.removeChild(item)
else:
self.tree_widget.invisibleRootItem().removeChild(item)
if __name__ == '__main__':
app = QApplication([])
window = MainWindow()
window.show()
app.exec_()
```
此代码将创建一个包含三个项目的 QTreeWidget,并在右键单击项目时显示删除菜单。当用户单击删除时,该项目将从树中删除。