201.PyQt5_QListWidget_项处理_列表控件

本文详细介绍了PyQt5中的QListWidget组件,包括其与QListWidgetItem的关系、功能、构造方法、添加与删除条目、编辑条目、设置颜色、选择方式、滚动与排序等操作,并提供了多个代码示例,展示了如何自定义项和模拟复选框功能。
摘要由CSDN通过智能技术生成

在这里插入图片描述

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈
入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈
虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈
PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈
Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈
优 质 资 源 下 载 :👉👉 资源下载合集 👈👈

在这里插入图片描述

QListWidget 项处理控件1
  • 继承关系图
    • 在这里插入图片描述
  • 描述
    • PyQt5中用于项(Item)处理的组件有两大类:Item ViewsItem Widgets
      • Item Views:包括QListViewQTreeViewQTableViewQColumnView
      • Item Widgets:包括QListWidgetQTreeWidgetQTableWidget
  • Item ViewsItem Widgets的区别
    • Item Widgets 直接将数据存储在每一个项里
    • Item Views 基于模型/视图(Model/View)结构,视图(View)与模型数据(Model Data)关联实现数据的显示和编辑
  • 关于Item Widgets
    • QListWidget的每行是一个项
    • QTreeWidget的每个节点是一个项
    • QTableWidget的每个单元格是一个项
    • 一个项存储了文字、文字的格式、自定义数据等
    • 示图:
      • 在这里插入图片描述
    • 示图文件代码
      from PyQt5.Qt import *
      import sys
      
      
      class Windows(QWidget):
          def __init__(self):
              super().__init__()
              self.setWindowTitle('Item Widget-初体验')
              self.resize(780, 350)
              self.widget_list()
      
          def widget_list(self):
              self.add_widget()
      
          def add_widget(self):
              lab1 = QLabel('QListWidget', self)
              lab2 = QLabel('QTableWidget', self)
              lab3 = QLabel('QTreeWidget', self)
      
              listwidget = QListWidget(self)
              listwidget.resize(150, 300)
              listwidget.move(0, 30)
              listwidget.addItem('QListWidege项1')
              listwidget.addItem('QListWidege项2')
              listwidget.addItem('QListWidege项3')
              listwidget.addItem('QListWidege项4')
      
              tablewidget = QTableWidget(7, 3, self)
              tablewidget.resize(400, 300)
              tablewidget.move(160, 30)
              for i in range(0, 4):
                  for j in range(0, 8):
                      item = QTableWidgetItem(f'项{
               j+1}-{
               i+1}')
                      tablewidget.setItem(j, i, item)
      
              treewidget = QTreeWidget(self)
              treewidget.resize(200, 300)
              treewidget.move(570, 30)
              treewidget.setColumnCount(1)                # 设置列数
              treewidget.setHeaderLabels(['Key'])         # 设置标题行
              treewidget.setHeaderHidden(True)            # 设置标题行是否隐藏
      
              item1 = QTreeWidgetItem(treewidget,['根节点1'],0)          # 创建根节点对象
              item2 = QTreeWidgetItem(treewidget,['根节点2'],0)          # 创建根节点对象
              item3 = QTreeWidgetItem(treewidget,['根节点3'],0)          # 创建根节点对象
      
              child11 = QTreeWidgetItem(item1, ['子节点1-1'], 0)         # 给根节点创建子节点
              child12 = QTreeWidgetItem(item1, ['子节点1-2'], 0)
              child13 = QTreeWidgetItem(item1, ['子节点1-3'], 0)
      
              child21 = QTreeWidgetItem(item2, ['子节点2-1'], 0)
              child22 = QTreeWidgetItem(item2, ['子节点2-2'], 0)
              child23 = QTreeWidgetItem(item2, ['子节点2-3'], 0)
      
              child111 = QTreeWidgetItem(child11, ['子节点1-1-1'], 0)    # 给子节点创建子节点
              child112 = QTreeWidgetItem(child11, ['子节点1-1-2'], 0)  # 给子节点创建子节点
      
              hlayout1 = QVBoxLayout()
              hlayout1.addWidget(lab1)
              hlayout1.addWidget(listwidget)
      
              hlayout2 = QVBoxLayout()
              hlayout2.addWidget(lab2)
              hlayout2.addWidget(tablewidget)
      
              hlayout3 = QVBoxLayout()
              hlayout3.addWidget(lab3)
              hlayout3.addWidget(treewidget)
      
              vlayout = QHBoxLayout()
              vlayout.addLayout(hlayout1, 1)
              vlayout.addLayout(hlayout2, 2)
              vlayout.addLayout(hlayout3, 1)
      
              self.setLayout(vlayout)
      
      
      if __name__ == '__main__':
          app = QApplication(sys.argv)
          window = Windows()
      
          window.show()
          sys.exit(app.exec_())
      

  • 功能作用
  • 构造函数
    QListWidget(parent)                 # 创建对象的同时设置父对象
    
  • 添加条目
    addItem(QListWidgetItem)            # 通过QListWidgetItem对象添加条目
    addItem(str)                        # 通过str对象添加条目
    
    insertItem(row, QListWidgetItem)    # 在row行后添加一条目item
    insertItems(row, Iterable[str])     # 通过迭代器在rou行后面添加N条条目
    
  • 当前条目
    setCurrentItem(QListWidgetItem)             # 设置指定条目为当前选中
    setCurrentItem(QListWidgetItem, QItemSelectionModel.SelectionFlags)
    # 参数 QItemSelectionModel.SelectionFlags
        # QltemSelectionModel.Clear             # 清除之前的选择
        # QltemSelectionModel.Select            # 选择指定的索引/区域
        # QltemSelectionModel.Deselect          # 取消选择指定的索引/区域
        # QltemSelectionModel.Toggle            # 切换指定的索引/区域的选择状态
        # QltemSelectionModel.Current           # 选择模型中的当前项(如果有)
        # QltemSelectionModel.Rows              # 选择整个行
        # QltemSelectionModel.Columns           # 选择整个列
        # QltemS
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失心疯_2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值