首页 > 其他分享 >22.PyQt5【高级组件】列表组件-QListWidget

22.PyQt5【高级组件】列表组件-QListWidget

时间:2023-01-16 10:56:19浏览次数:53  
标签:QListWidget 22 Item self 列表 item listWidget 组件

一、前言
QListWidget用于从列表中添加或删除项目。列表中的每个项目都是一个 QListWidgetItem 对象。ListWidget 可以设置为多选。

二、学习目标

1.QListWidget常用方法

2.QListWidget常用信号

3.QListWidget组件的应用

三、知识点

1.【QListWidget、QListWidgetItem常用方法】

  • QListWidget常用方法

    方法 描述
    addItem(item or label) 在列表尾部中添加 QListWidgetItem 对象或字符串
    addItems(labels) 在列表尾部中添加 str 列表中的每条目
    insertItem(row, item or label) 在列表索引位置插入 QListWidgetItem 对象或字符串
    insertItems(row, labels) 在列表索引位置插入字符串 str 列表中的每条目
    removeItemWidget(item) 通过 QListWidgetItem 对象移除列表条目
    takeItem(row) 通过行索引int移除列表条目
    findItems(text,flags) 使用给定的标志查找文本与字符串文本匹配的项目
    setItemWidget(item,widget) 为指定列表项设置一个部件
    setSortingEnabled(enable) 设置是否启用排序,传入bool类型
    sortItems([order=Qt.AscendingOrder]) 根据指定的顺序对列表小部件中的所有项目进行排序
    count() 返回所有列表项的数量,包括隐藏项
    currentItem() 返回当前选择的item对象
    currentRow() 返回当前选择的行索引int
    item(row) 返回指定行索引的item对象
    row(item) 返回指定item对象的行索引
    itemWidget(item) 返回指定item对象的QListWidget对象
    selectedItems() 返回列表窗口小部件中所有选定项的列表
    clear() 删除视图中的所有项,警告:所有项目将被永久删除
  • QListWidgetItem常用方法

    方法 描述
    checkState() 返回复选状态
    setCheckState(state) 设置复选框的勾选状态
    Qt.Checked:选中状态
    Qt.PartiallyChecked:半选中状态
    Qt.Unchecked:没有被选中
    icon() 返回列表项的图标
    setIcon(icon) 设置列表项的图标
    isHidden() 返回列表项是否隐藏,如果隐藏返回True;不隐藏返回False
    setHidden(hide) 设置列表项是否隐藏,如果True则隐藏;False则不隐藏
    text() 返回列表项的文本
    setText(text) 设置列表项的文本
    flags() 返回列表项的项目标志
    setFlags(flags) 设置列表项的项目标志设置为flags

    Qt.ItemFlag的取值及含义如下:

2.【QListWidget常用信号】

  • QListWidget常用信号

    信号 描述
    itemClicked(item) 当点击列表中的条目时,发射此信号
    itemChanged(item) 条目数据发生改变时,发射此信号
    currentItemChanged(current,previous) 当列表中的条目发生改变时,发射此信号
    currentRowChanged(currentRow) 当列表中的行发生改变时,发射此信号
    currentTextChanged(currentText) 当列表中的条目发生改变时,发射此信号
    itemDoubleClicked(item) 双击列表中的某个条目时,发射此信号
    itemEntered(item) 当鼠标光标进入列表的条目时,发射此信号
    itemPressed(item) 鼠标在列表的条目上按下时时,发射此信号
    itemSelectionChanged() 选择发生时,发射此信号

3.【QListWidget组件的应用】

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QListWidget, QListWidgetItem


class QmyWidget(QWidget):

    def __init__(self, parent=None):
        super().__init__(parent)  # 调用父类的构造函数,创建QWidget窗体
        self.setupUi()

    def setupUi(self):
        """页面初始化"""
        # 设置窗体大小及标题
        self.resize(500, 400)
        self.setWindowTitle("QListWidget组件示例")
        # 创建布局
        self.layout = QVBoxLayout()

        # 创建QListWidget组件
        self.listWidget = QListWidget()
        self.listWidget.addItem("Item 1")  # 添加item
        self.listWidget.addItem("Item 2")
        self.listWidget.addItem("Item 3")
        self.listWidget.addItem("Item 4")
        # self.listWidget.addItems(["Item 1", "Item 2", "Item 3", "Item 4"])  # 添加多个item
        # QListWidget组件绑定信号
        self.listWidget.itemClicked.connect(self.on_listWidget_itemClicked)

        # 创建两个按钮组件
        self.button1 = QPushButton("新增Item", self)
        self.button1.clicked.connect(self.insert_item)  # 为button绑定槽函数
        self.button2 = QPushButton("删除Item", self)
        self.button2.clicked.connect(self.delete_item)   # 为button绑定槽函数
        self.button3 = QPushButton("查询Item", self)
        self.button3.clicked.connect(self.select_item)    # 为button绑定槽函数

        # 将组件添加到布局中
        self.layout.addWidget(self.listWidget)
        self.layout.addWidget(self.button1)
        self.layout.addWidget(self.button2)
        self.layout.addWidget(self.button3)
        # 为窗体添加布局
        self.setLayout(self.layout)

    def insert_item(self):
        """新增item槽函数"""
        print("item新增成功!")
        # 方式一:新增文本item
        self.listWidget.insertItem(0, "Item Text")
        # 方式二:新增QListWidgetItem对象item
        item_new = QListWidgetItem()
        item_new.setText("Item Obj")         # 为item设置文本
        item_new.setCheckState(False)        # 为item设置复选状态,不勾选
        item_new.setIcon(QIcon("logo.png"))  # 为item设置图标
        item_new.setFlags(Qt.ItemIsEnabled | Qt.ItemIsEditable | Qt.ItemIsUserCheckable)  # 为item设置标志
        self.listWidget.insertItem(0, item_new)
        # 方式三:新增其他部件的item
        item_button = QListWidgetItem()
        button = QPushButton("Button")
        self.listWidget.insertItem(0, item_button)
        self.listWidget.setItemWidget(item_button, button)  # 为item设置按钮部件

    def delete_item(self):
        """删除item槽函数"""
        print("item删除成功!")
        # 方式一:按行索引删除item对象
        self.listWidget.takeItem(0)
        # 方式一:按item对象删除item的小部件
        current_item = self.listWidget.currentItem()
        self.listWidget.removeItemWidget(current_item)

    def select_item(self):
        """查询item槽函数"""
        print("item查询成功!")
        # 隐藏所有的列表项
        for i in range(4):
            self.listWidget.item(i).setHidden(True)
        # 查询Item 1并取消隐藏
        item_list = self.listWidget.findItems("Item 1", Qt.MatchContains | Qt.MatchRecursive)
        for item in item_list:
            item.setHidden(False)

    def on_listWidget_itemClicked(self, item):
        """槽函数"""
        print(item.text())


if __name__ == '__main__':
    app = QApplication(sys.argv)
    myMain = QmyWidget()
    myMain.show()
    sys.exit(app.exec_())

标签:QListWidget,22,Item,self,列表,item,listWidget,组件
From: https://www.cnblogs.com/ckxingchen/p/17054880.html

相关文章

  • 21.PyQt5【基本组件】文件对话框-QFileDialog
    一、前言QFileDialog小部件是一个文件选择器对话框。它使用户能够浏览文件系统并选择要打开或保存的文件。对话框通过静态函数或调用调用exec_()对话框对象上的函数。二......
  • 23.PyQt5【高级组件】表格组件-QTableWidget
    一、前言QTableWidget是常用的显示数据表格的控件,使用QTableWidget时就需要QTableWidgetItem。用来表示表格中的一个单元格,整个表格就是用各个单元格构建起来的。二、学......
  • 25.PyQt5【高级组件】选项卡-QTabWidget
    一、前言如果表单有太多需要同时显示的字段,可以将它们排列在不同的页面中,放置在选项卡式小部件的每个选项卡下。提供了一个标签栏和一个页面区域。显示第一个选项卡下的页......
  • 24.PyQt5【高级组件】树形组件-QTreeWidget
    一、前言QTreeWidget使用类似于QListView类的方式提供一种典型的基于item的树形交互方法类,该类基于QT的“模型/视图”结构,提供了默认的模型来支撑item的显示,这些i......
  • 26.PyQt5【高级组件】工具箱-QToolBox
    一、前言QToolBox控件提供了一个可进行一列选项卡操作方式,在每个选项卡内可包含不同的控件布局。QToolBox将选项卡一个一个地显示,当前项目显示在当前选项卡下方。每个选项......
  • 3.PyQt5【窗口组件】主窗口-QMainWindow
    一、前言QMainWindow类提供一个有菜单条、锚接窗口(例如工具条)和一个状态条的主应用程序窗口。主窗口通常用在提供一个大的中央窗口部件(例如文本编辑或者绘制画布)以及周围......
  • 4.PyQt5【布局组件】水平布局-QHBoxLayout
    一、前言QLayout是Qt中布局管理器的抽象基类,通过对QLayout的继承,实现了功能各异且互补的布局管理器。布局管理器不是界面组件,而是界面组件的定位策略;任意容器类型的组件都......
  • 5.PyQt5【布局组件】垂直布局-QVBoxLayout
    一、前言本节我们介绍布局组件中的垂直布局QVBoxLayout。二、学习目标1.QVBoxLayout垂直布局应用三、知识点1.【QVBoxLayout垂直布局应用】垂直布局将多个控件在垂直......
  • 6.PyQt5【布局组件】网格布局-QGridLayout
    一、前言本节我们介绍布局组件中的网格布局QGridLayout。二、学习目标1.QGridLayout网格布局的应用三、知识点1.【QGridLayout网格布局的应用】网格布局也称栅格布局......
  • 7.PyQt5【布局组件】表单布局-QFormLayout
    一、前言本节我们介绍布局组件中的表单布局QFormLayout。二、学习目标1.QFormLayout表单布局的应用三、知识点1.【QFormLayout表单布局的应用】表单布局以两列的形式......