使用表微件显示数据-列表
如果要显示排列在表中的数据,请使用 QTableWidget执行此操作,而无需处理太多配置。
请注意,使用 QTableWidget不是在表中显示信息的唯一路径。您还可以创建数据模型并使用 QTableView来显示它,但这不在本教程的讨论范围内。
# 导入 、 和 显示背景颜色:QTableWidgetQTableWidgetItemQColor
import sys
from PySide6.QtGui import QColor
from PySide6.QtWidgets import (QApplication, QTableWidget,
QTableWidgetItem)
# 创建一个简单的数据模型,其中包含不同颜色的名称和十六进制代码列表:
colors = [("Red", "#FF0000"),
("Green", "#00FF00"),
("Blue", "#0000FF"),
("Black", "#000000"),
("White", "#FFFFFF"),
("Electric Green", "#41CD52"),
("Dark Blue", "#222840"),
("Yellow", "#F9E56d")
]
# 定义一个函数以将十六进制代码转换为 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)) # int(a[0:2], 16) 将16进制转换为十进制
return QColor.fromRgb(rgb[0], rgb[1], rgb[2]), rgb[0], rgb[1], rgb[2]
# 初始化单例:QApplication
app = QApplication()
# 将 配置为具有与结构中的项数相等的行数,以及具有一个颜色条目的成员加一个的列数。您可以使用如下所述设置列名称:QTableWidgetcolorssetHorizontalHeaderLabels
table = QTableWidget()
table.setRowCount(len(colors)) # 行数
table.setColumnCount(len(colors[0]) + 2) # 列数 使用+2的原因是为了包含两个新列,我们可以在其中显示颜色和颜色的RGB值。
table.setHorizontalHeaderLabels(["Name", "Hex Code", "Color", "RGB"]) # 列的名称
# 迭代数据结构,创建实例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)[0])
item_RGB = QTableWidgetItem(str((get_rgb_from_hex(code)[1:])))
table.setItem(i, 0, item_name)
table.setItem(i, 1, item_code)
table.setItem(i, 2, item_color)
table.setItem(i, 3, item_RGB)
# 显示表并执行 .QApplication
table.show()
sys.exit(app.exec())
最终应用程序将如下所示: