PyQt5-高级控件使用(QListWidget)
QListWidget是一个用于显示数据的列表,每个条目中都是一个QListWidgetItem对象;QListWidget可以设置多选;
常用方法如下:
常用信号:
例如:
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 6 7 class WindowClass(QWidget): 8 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 16 17 self.view.setLineWidth(50) 18 self.view.addItems(["C","A","D","S"]) 19 self.layout.addWidget(self.view) 20 self.setLayout(self.layout) 21 22 self.view.clicked.connect(self.check)#单击选中某一个选项 23 ''''' 24 创建右键菜单 25 ''' 26 # 必须将ContextMenuPolicy设置为Qt.CustomContextMenu 27 # 否则无法使用customContextMenuRequested信号 28 self.setContextMenuPolicy(Qt.CustomContextMenu) 29 30 31 # 创建QMenu 32 self.contextMenu = QMenu(self) 33 self.actionA = self.contextMenu.addAction(QIcon("images/0.png"), u'| 删除') 34 35 # 显示菜单 36 self.customContextMenuRequested.connect(self.showContextMenu) 37 38 #点击删除menu 39 self.contextMenu.triggered[QAction].connect(self.remove) 40 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的联系) 53 54 #注意:removeItemWidget(self, QListWidgetItem) # 移除一个Item,无返回值 55 #注意:takeItem(self, int) # 切断一个Item与List的联系,返回该Item 56 self.view.removeItemWidget(self.view.takeItem(self.f)) #删除 57 58 if __name__=="__main__": 59 app=QApplication(sys.argv) 60 win=WindowClass() 61 win.show() 62 sys.exit(app.exec_())