Pyside6 --Qt设计师--简单了解各个控件的作用之:ItemWidgets(Item-Based)

目录

  • [一、List widget](#一、List widget)
  • [二、Tree Widget](#二、Tree Widget)
  • [三、Table Widget](#三、Table Widget)

一、List widget

定义:ListWidget(列表部件)是一种图形用户界面(GUI)组件,用于展示简单的项目列表。它提供了一个方便的方式来呈现一系列的文本、图标或者用户自定义的小部件(如按钮等)作为列表项。与基于模型 - 视图架构的列表视图(ListView)不同,ListWidget 更易于使用,它内部已经封装了一些基本的数据管理功能不需要额外的数据模型来提供数据。

用途举例:在待办事项应用中,可以使用 ListWidget 展示待办事项列表,用户可以直观地看到任务内容;在简单的文件选择对话框中,文件列表可以通过 ListWidget 呈现给用户,方便用户选择一个或多个文件;在消息列表界面,如聊天软件的聊天记录列表或者邮件客户端的邮件列表,ListWidget 也能很好地发挥作用,将消息或者邮件主题等信息以列表形式展示出来。
列表形式展示:ListWidget 以垂直排列的方式展示列表项,每个列表项占据一行。默认情况下,列表项之间会有一定的间隔,使得各个项目在视觉上是分开的,便于用户区分和选择。
可选的图标支持:可以为每个列表项添加图标,图标通常显示在列表项文本的左侧,用于增强列表项的视觉辨识度或者提供额外的信息。例如,在文件列表中,可以根据文件类型为文件列表项添加不同的图标,如文档文件显示文档图标图片文件显示图片图标等

支持多种选择模式:它支持多种选择方式,如单选(用户只能选择一个列表项)、多选(用户可以通过按住 Ctrl 或 Shift 键等方式选择多个列表项)和无选择模式(列表仅用于展示,用户不能选择任何项目)。

代码示例如下:

python 复制代码
import sys
from PySide6.QtWidgets import QApplication, QWidget, QMainWindow, QListWidget, QVBoxLayout



class ManinWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("lsit widget 学习!")
        self.setGeometry(100, 100, 500, 400)

        central_widget = QWidget()
        self.setCentralWidget(central_widget)

        ver_layout = QVBoxLayout()

        # 创建列表
        list_widget = QListWidget()

        # 添加列表
        list_widget.addItem("1")
        list_widget.addItem("2")
        list_widget.addItem("3")
        list_widget.addItem("4")

        ver_layout.addWidget(list_widget)

        central_widget.setLayout(ver_layout)
        
if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainwindow = ManinWindow()
    mainwindow.show()
    sys.exit(app.exec())

运行结果如下:

二、Tree Widget

定义:Tree Widget(树形部件)是一种用于以树形结构展示数据的图形用户界面(GUI)组件。它由节点(QTreeWidgetItem)构成,这些节点之间具有父子关系,能够清晰地呈现层次化的数据,就像真实的树状结构一样,有根节点、分支节点和叶子节点。根节点是树形结构的起始点,分支节点可以包含子节点,叶子节点是没有子节点的末端节点。
用途举例:在文件系统浏览器中,Tree Widget可以用来展示文件夹和文件的层次结构。文件夹作为分支节点,文件作为叶子节点,用户可以通过展开和折叠文件夹节点来浏览文件系统;在组织结构图的展示中,公司部门作为分支节点,部门内的员工可以作为叶子节点,这样可以直观地呈现组织的层级关系;在软件的配置选项界面,也可以使用Tree Widget来分类展示不同的配置组和具体的配置选项,方便用户进行系统或软件的配置管理。
树形结构展示:以缩进的方式显示节点来体现父子关系。父节点通常可以展开(显示其子节点)和折叠(隐藏其子节点),这种动态展示方式有效利用了空间,同时让用户根据自己的需求查看层次结构中的不同部分。例如,在展示文件系统时,用户可以折叠不需要查看的文件夹分支,只展开当前关注的部分,使界面简洁明了。
图标支持:通常会为不同类型的节点配备相应的图标,以增强视觉辨识度。例如,在文件系统树形视图中,文件夹节点可能会有一个文件夹图标,文件节点会根据文件类型显示不同的图标,如文档文件显示纸张图标、可执行文件显示程序图标等。
列显示(可选):Tree Widget可以支持多列显示。除了用于展示树形结构的主列外,还可以添加其他列来显示节点的额外信息。例如,在文件系统展示中,除了文件名列,还可以有文件大小、修改日期等列,并且可以通过表头进行排序等操作。不过单列式的树形部件也很常见,重点在于展示层次关系。

代码示例如下:

python 复制代码
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QTreeWidget, QTreeWidgetItem, QVBoxLayout


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Tree View 学习!")
        self.setGeometry(100, 100, 600, 400)

        # 创建中央布局部件
        central_widget = QWidget()
        self.setCentralWidget(central_widget)

        # 创建垂直布局管理器
        ver_layout = QVBoxLayout()

        # 创建Tree Widget实例
        tree_widget = QTreeWidget()

        # 设置树形部件的列数(这里以简单展示一列内容为例)
        tree_widget.setColumnCount(1)

        # 创建根节点(代表公司)
        company_item = QTreeWidgetItem(tree_widget)
        company_item.setText(0, "ymchuangke科技公司")

        # 创建部门节点并添加到公司根节点下
        department_1 = QTreeWidgetItem(company_item)
        department_1.setText(0, "研发部")
        department_2 = QTreeWidgetItem(company_item)
        department_2.setText(0, "市场部")
        department_3 = QTreeWidgetItem(company_item)
        department_3.setText(0, "财务部")

        # 为研发部添加员工子节点
        employee_1_rd = QTreeWidgetItem(department_1)
        employee_1_rd.setText(0, "研发人员1")
        employee_2_rd = QTreeWidgetItem(department_1)
        employee_2_rd.setText(0, "研发人员2")

        # 为市场部添加员工子节点
        employee_1_mk = QTreeWidgetItem(department_2)
        employee_1_mk.setText(0, "市场专员1")
        employee_2_mk = QTreeWidgetItem(department_2)
        employee_2_mk.setText(0, "市场专员2")

        # 为财务部添加员工子节点
        employee_1_cw = QTreeWidgetItem(department_3)
        employee_1_cw.setText(0, "财务人员1")
        employee_2_cw = QTreeWidgetItem(department_3)
        employee_2_cw.setText(0, "财务人员2")

        # 将Tree Widget添加到垂直布局中
        ver_layout.addWidget(tree_widget)

        # 添加到中央布局
        central_widget.setLayout(ver_layout)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    main_window = MainWindow()
    main_window.show()
    sys.exit(app.exec())

运行结果如下:

三、Table Widget

定义:Table Widget(表格部件)是一种用于以表格形式展示数据的图形用户界面(GUI)组件。它由行和列组成,形成了一个个单元格,每个单元格可以存放数据,如文本、数字、图标等。这种结构使得它非常适合展示具有行列关系的数据集合,例如数据库记录、电子表格数据或者任何可以组织成二维表格形式的数据。
用途举例:在数据库管理软件中,Table Widget可以用来直观地显示数据库表中的数据记录。用户可以查看、编辑和删除表格中的数据,就像在数据库客户端工具中操作表格一样;在数据统计和分析软件中,用于展示数据矩阵,方便用户进行数据对比和分析;在简单的学生成绩管理系统中,可以将学生的姓名、各科成绩等信息以表格形式展示,方便教师查看和管理成绩。
行列结构清晰:Table Widget的核心是其明显的行列布局。行和列交叉形成的单元格用于展示数据元素。通常会有水平和垂直的表头(也可以根据需要隐藏表头),水平表头用于标识列的内容(如 "姓名""年龄""性别" 等列标题),垂直表头用于标识行(在一些需要明确行标识的场景下使用)。
单元格编辑支持(可选):它支持单元格数据的编辑。用户可以直接在单元格中双击或者通过特定的编辑模式进入编辑状态,修改单元格中的数据内容。当然,也可以根据应用程序的需求设置某些单元格为只读状态,防止用户修改重要数据。
滚动条与大小调整:当表格中的数据行或列过多,超出了可视范围时,会出现滚动条。水平滚动条用于查看超出视图宽度的列,垂直滚动条用于查看超出视图高度的行。同时,用户可以手动调整列宽和行高,以更好地展示数据或者适应窗口大小的变化。

示例代码如下:

python 复制代码
import sys
from PySide6.QtWidgets import QApplication, QWidget, QMainWindow, QVBoxLayout, QTableWidget, QTableWidgetItem


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Table Widget 学习!")
        self.setGeometry(100, 100, 500, 400)

        central_widget = QWidget()
        self.setCentralWidget(central_widget)

        # 创建垂直布局
        ver_layut = QVBoxLayout()

        table_widget = QTableWidget()

        table_widget.setRowCount(3)
        table_widget.setColumnCount(3)

        # 填充数据到单元格
        table_widget.setItem(0, 0, QTableWidgetItem("1"))
        table_widget.setItem(0, 1, QTableWidgetItem("2"))
        table_widget.setItem(0, 2, QTableWidgetItem("3"))

        table_widget.setItem(1, 0, QTableWidgetItem("4"))
        table_widget.setItem(1, 1, QTableWidgetItem("5"))
        table_widget.setItem(1, 2, QTableWidgetItem("6"))

        table_widget.setItem(2, 0, QTableWidgetItem("7"))
        table_widget.setItem(2, 1, QTableWidgetItem("8"))
        table_widget.setItem(2, 2, QTableWidgetItem("9"))


        ver_layut.addWidget(table_widget)

        central_widget.setLayout(ver_layut)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainwindow = MainWindow()
    mainwindow.show()
    sys.exit(app.exec())

代码运行结果如下:

相关推荐
ByteBlossom6662 小时前
MDX语言的语法糖
开发语言·后端·golang
Wyn_2 小时前
【QT】窗口/界面置于最前端显示,且激活该窗口
qt
肖田变强不变秃3 小时前
C++实现矩阵Matrix类 实现基本运算
开发语言·c++·matlab·矩阵·有限元·ansys
沈霁晨3 小时前
Ruby语言的Web开发
开发语言·后端·golang
小兜全糖(xdqt)3 小时前
python中单例模式
开发语言·python·单例模式
DanceDonkey3 小时前
@RabbitListener处理重试机制完成后的异常捕获
开发语言·后端·ruby
Python数据分析与机器学习3 小时前
python高级加密算法AES对信息进行加密和解密
开发语言·python
军训猫猫头4 小时前
52.this.DataContext = new UserViewModel(); C#例子 WPF例子
开发语言·c#·wpf
ac-er88884 小时前
Yii框架优化Web应用程序性能
开发语言·前端·php
Tester_孙大壮5 小时前
第4章:Python TDD消除重复与降低依赖实践
开发语言·驱动开发·python