
列表控件可以讓我們以列表形式呈現內容,是界面更加有序美觀。QListWidget列表控件應當與QListWidgetItem一起使用,后者作為項被添加入列表控件中,也就是說列表控件中的每一項都是一個QListWidgetItem。這也是為什么我們說QListWidget是一個基於項(Item-based)的控件了
樣式:

1 import sys 2 from PyQt5.QtGui import QPixmap 3 from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QListWidget, QListWidgetItem, QHBoxLayout 4 5 class Demo(QWidget): 6 def __init__(self): 7 super(Demo, self).__init__() 8 self.pic_label = QLabel(self) 9 self.pic_label.setPixmap(QPixmap('arrow.png')) 10 11 self.listwidget_1 = QListWidget(self) #實例化列表控件 12 self.listwidget_2 = QListWidget(self) 13 self.listwidget_1.doubleClicked.connect(lambda: self.change_func(self.listwidget_1)) 14 #雙擊列表控件時發出信號 15 self.listwidget_2.doubleClicked.connect(lambda: self.change_func(self.listwidget_2)) 16 17 18 for i in range(6): 19 text = 'Item {}'.format(i) 20 self.item = QListWidgetItem(text) #把字符串轉化為QListWidgetItem項目對象 21 self.listwidget_1.addItem(self.item) #添加項目 22 23 self.item_6 = QListWidgetItem('Item 6', self.listwidget_1) # 實例化后直接添加 24 25 self.listwidget_1.addItem('Item 7') #直接添加項目,不用QListWidgetItem對象,【功能可能不全】 26 str_list = ['Item 9', 'Item 10'] 27 self.listwidget_1.addItems(str_list) #添加項目-列表 28 29 self.item_8 = QListWidgetItem('Item 8') 30 self.listwidget_1.insertItem(8, self.item_8) #插入項目。參數1:索引號,參數2:項目 31 # self.listwidget_1.insertItem(8, 'Item 8') 32 33 self.h_layout = QHBoxLayout() 34 self.h_layout.addWidget(self.listwidget_1) 35 self.h_layout.addWidget(self.pic_label) 36 self.h_layout.addWidget(self.listwidget_2) 37 self.setLayout(self.h_layout) 38 39 self.listwidget_1.itemClicked.connect(self.d) #單擊列表控件時發出信號 40 self.listwidget_1.currentItemChanged.connect(self.g) #當前項目發生變化時發出信號 41 self.listwidget_1.addItem('Item_11') 42 43 44 def g(self): 45 print('項目總數發生了改變') 46 47 def d(self): 48 print('你單擊了列表控件') 49 50 51 def change_func(self, listwidget): 52 if listwidget == self.listwidget_1: 53 item = QListWidgetItem(self.listwidget_1.currentItem()) #轉化為QListWidgetItem對象 54 # self.listwidget_1.currentItem() 返回當前項目。是個對象。<PyQt5.QtWidgets.QListWidgetItem object at 0x0000008425463A68> 55 self.listwidget_2.addItem(item) #添加項目。參數是QListWidgetItem對象 56 print(self.listwidget_2.count()) #返回項目總數 57 58 59 else: 60 self.listwidget_2.takeItem(self.listwidget_2.currentRow())#刪除指定索引號的項目 61 #self.listwidget_2.currentRow() 返回當前項目的行索引號 62 print(self.listwidget_2.count()) 63 64 65 if __name__ == '__main__': 66 app = QApplication(sys.argv) 67 demo = Demo() 68 demo.show() 69 sys.exit(app.exec_())
self.list_widget.currentIndex().row() 返回列表控件當前選中的索引號
