import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QListWidget, QAction, QMenu
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.list_widget = QListWidget(self)
self.list_widget.setGeometry(50, 50, 200, 100)
initial_items = ["Item 1", "Item 2", "Item 3"]
self.list_widget.addItems(initial_items)
# 设置上下文菜单政策
self.list_widget.setContextMenuPolicy(Qt.CustomContextMenu)
# 绑定上下文菜单弹出的事件处理
self.list_widget.customContextMenuRequested.connect(self.showContextMenu)
# 展示上下文菜单
def showContextMenu(self, pos):
# 菜单设置
self.context_menu = QMenu(self)
delete_action = QAction("Delete", self)
delete_action.triggered.connect(self.deleteSelectedItem) # 菜单项的绑定方法
self.context_menu.addAction(delete_action)
# 显示菜单
# 将列表控件上的局部坐标 pos 转换为全局坐标,确保菜单会在正确的位置显示
self.context_menu.exec_(self.list_widget.mapToGlobal(pos))
# 删除选中项
def deleteSelectedItem(self):
selected_item = self.list_widget.currentItem()
if selected_item:
self.list_widget.takeItem(self.list_widget.row(selected_item))
if __name__ == '__main__':
from PyQt5.QtGui import QFont
# 标准字体
standard_font = QFont("Arial", 12)
app = QApplication(sys.argv)
window = MyWindow()
window.setFont(standard_font)
window.show()
sys.exit(app.exec_())
pyqt5-QListWidget的上下文菜单
猜你喜欢
转载自blog.csdn.net/m0_62653695/article/details/132345324
今日推荐
周排行