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_())

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM