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() 返回列表控件当前选中的索引号
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了