使用表格小部件显示数据¶
如果你想显示排列在表格中的数据,使用QTableWidget
来实现,无需处理太多配置。
请注意,使用QTableWidget
并不是显示表格信息的唯一途径。你也可以创建一个数据模型并使用QTableView
来显示它,但这不在本教程的范围内。
注意
这个小部件是一个您可以进一步自定义的现成版本。要了解更多关于Qt中的模型/视图架构,请参考其官方文档。
导入
QTableWidget
,QTableWidgetItem
, 和QColor
来显示背景颜色: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)) return QColor.fromRgb(rgb[0], rgb[1], rgb[2])
初始化
QApplication
单例:app = QApplication()
配置
QTableWidget
使其行数与colors
结构中的项目数量相同,列数与一个颜色条目的成员数加一相同。您可以使用setHorizontalHeaderLabels
设置列名,如下所述:table = QTableWidget() table.setRowCount(len(colors)) table.setColumnCount(len(colors[0]) + 1) table.setHorizontalHeaderLabels(["Name", "Hex Code", "Color"])
注意
使用
+ 1
的原因是为了包含一个新列,我们可以在其中显示颜色。遍历数据结构,创建
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)
显示表格并执行
QApplication
。table.show() sys.exit(app.exec())
最终的应用程序将如下所示:
