列表控件QListWidget

Posted liming19680104

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了列表控件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_())

 



以上是关于列表控件QListWidget的主要内容,如果未能解决你的问题,请参考以下文章

在QT中怎么隐藏QComboBox的下拉列表并当单击QComboBox的编辑框时,就弹出QListWidget窗口

QListWidget 向下滚动列表后拖动

将自定义 QWidget 添加到 QListWidget

qt 制作含多个控件的列表

QListWidget加入小控件

PyQt:如何获得大部分 QListWidget