显示表小部件数据#

如果您想以表格的形式显示数据,可以使用 QTableWidget 来实现,而无需进行大量配置。

注意,使用 QTableWidget 并不是在表格中显示信息的唯一方法。您还可以创建一个数据模型并使用 QTableView 来显示它,但这不是本教程的范围。

注意

此小部件是您可进一步自定义的现成版本的某个东西。要了解更多有关 Qt 中模型/视图体系结构的信息,请参阅其官方文档

  1. 导入 QTableWidgetQTableWidgetItemQColor 以显示背景颜色

    import sys
    from PySide6.QtGui import QColor
    from PySide6.QtWidgets import (QApplication, QTableWidget,
                                   QTableWidgetItem)
    
  2. 创建一个简单的数据模型,其中包含各种颜色的名称和十六进制代码列表

    colors = [("Red", "#FF0000"),
              ("Green", "#00FF00"),
              ("Blue", "#0000FF"),
              ("Black", "#000000"),
              ("White", "#FFFFFF"),
              ("Electric Green", "#41CD52"),
              ("Dark Blue", "#222840"),
              ("Yellow", "#F9E56d")]
    
  3. 定义一个函数将十六进制代码转换为 RGB 相当值

    def get_rgb_from_hex(code):
        code_hex = code.replace("#", "")
        rgb = tuple(int(code_hex[i:i+2], 16) for i in (0, 2, 4))
        return QColor.fromRgb(rgb[0], rgb[1], rgb[2])
    
  4. 初始化 QApplication 单例

    app = QApplication()
    
  5. 配置 QTableWidget 以包含等于 colors 结构中的项数以及一个具有一个颜色条目成员的数量,再加一。您可以使用下面的 setHorizontalHeaderLabels 设置列名

    table = QTableWidget()
    table.setRowCount(len(colors))
    table.setColumnCount(len(colors[0]) + 1)
    table.setHorizontalHeaderLabels(["Name", "Hex Code", "Color"])
    

    注意

    + 1 的原因是在我们显示颜色的新列中包含一个。

  6. 遍历数据结构,创建 QTableWidgetItems 实例,并使用 x, y 坐标将它们添加到表中。这里数据是逐行分配的

    for i, (name, code) in enumerate(colors):
        item_name = QTableWidgetItem(name)
        item_code = QTableWidgetItem(code)
        item_color = QTableWidgetItem()
        item_color.setBackground(get_rgb_from_hex(code))
        table.setItem(i, 0, item_name)
        table.setItem(i, 1, item_code)
        table.setItem(i, 2, item_color)
    
  7. 显示表格并执行 QApplication

    table.show()
    sys.exit(app.exec())
    

最终的应用程序将如下所示

QTableWidget example