显示表小部件数据#
如果您想以表格的形式显示数据,可以使用 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())
最终的应用程序将如下所示