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()   返回列表控件当前选中的索引号

 

posted @ 2019-02-14 12:44  天子骄龙  阅读(20825)  评论(0编辑  收藏  举报