pyqt5--列表控件QListWidget


列表控件可以讓我們以列表形式呈現內容,是界面更加有序美觀。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()   返回列表控件當前選中的索引號

 


免責聲明!

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



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