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