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