【Qt for Python官方教程】使用QTableWidget组件显示数据
如果你想要在表格里显示数据,可以直接使用 QTableWidget 组件来完成。本节教程将完成一个显示颜色列表的程序。需要注意,使用 QTableWidget 不是在表格中显示信息的唯一方法。你也可以创建数据列表并用 QTableView 将其显示出来,但这不是本节教程的内容。引用 QTableWidget,QTableWidgetItem 和 QColor 来显示背景颜色:import sysf
如果你想要在表格里显示数据,可以直接使用 QTableWidget 组件来完成。本节教程将完成一个显示颜色列表的程序。
需要注意,使用 QTableWidget 不是在表格中显示信息的唯一方法。你也可以创建数据列表并用 QTableView 将其显示出来,但这不是本节教程的内容。
-
引用 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 的行数为颜色的数量,列数为每个颜色的属性数+1。可以像下面这样使用 setHorizontalHeaderLabels() 方法设置列名:
table = QTableWidget() table.setRowCount(len(colors)) table.setColumnCount(len(colors[0]) + 1) table.setHorizontalHeaderLabels(["Name", "Hex Code", "Color"])
-
循环列表,创建 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_())
最终程序运行效果是这样的:
更多关于 Qt for Python 文章,可以查看 PySide6 专栏。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)