1 #QListWidget 控件使用
 2 from PyQt5.QtWidgets import   QMessageBox,QListWidget,QListWidgetItem, QStatusBar,  QMenuBar,QMenu,QAction,QLineEdit,QStyle,QFormLayout,   QVBoxLayout,QWidget,QApplication ,QHBoxLayout, QPushButton,QMainWindow,QGridLayout,QLabel
 3 from PyQt5.QtGui import QIcon,QPixmap,QStandardItem,QStandardItemModel,QCursor
 4 from PyQt5.QtCore import QStringListModel,QAbstractListModel,QModelIndex,QSize,Qt
 5 import sys
 7 class WindowClass(QWidget):
 9     def __init__(self,parent=None):
10         self.f=""
11         super(WindowClass, self).__init__(parent)
12         self.layout=QVBoxLayout()
13         self.resize(400,300)
14         self.view=QListWidget()
15         #self.view.setViewMode(QListWidget.ListMode) #QListWidget.IconMode
17         self.view.setLineWidth(50)
18         self.view.addItems(["C","A","D","S"])
19         self.layout.addWidget(self.view)
20         self.setLayout(self.layout)
22         self.view.clicked.connect(self.check)#单击选中某一个选项
23         '''''
24             创建右键菜单
25             '''
26         # 必须将ContextMenuPolicy设置为Qt.CustomContextMenu
27         # 否则无法使用customContextMenuRequested信号
28         self.setContextMenuPolicy(Qt.CustomContextMenu)
31         # 创建QMenu
32         self.contextMenu = QMenu(self)
33         self.actionA = self.contextMenu.addAction(QIcon("images/0.png"), u'|  删除')
35         # 显示菜单
36         self.customContextMenuRequested.connect(self.showContextMenu)
38         #点击删除menu
39         self.contextMenu.triggered[QAction].connect(self.remove)
41     def check(self,index):
42         r=index.row()
43         self.f=r;
44     def showContextMenu(self):
45         #如果有选中项,则显示显示菜单
46         items=self.view.selectedIndexes()
47         if items:
48           self.contextMenu.show()
49           self.contextMenu.exec_(QCursor.pos())  # 在鼠标位置显示
50     def remove(self,qAction):
51         print(self.f)
52         #self.view.takeItem(self.f)#删除行(实际上是断开了与list的联系)
54         #注意:removeItemWidget(self, QListWidgetItem)  # 移除一个Item,无返回值
55         #注意:takeItem(self, int)  # 切断一个Item与List的联系,返回该Item
56         self.view.removeItemWidget(self.view.takeItem(self.f))  #删除
58 if __name__=="__main__":
59     app=QApplication(sys.argv)
60     win=WindowClass()
61     win.show()
62     sys.exit(app.exec_())