PySide6 Tutorials (一)表格小部件魔改

前言

Pyside6官方教程给了一个使用表格显示颜色的教程,原教程地址如下:源地址, 结合前面button信号的学习,就魔改添加了如下功能:增加一列按钮,可以修改该行的颜色值,通过点击按钮生成指定的颜色背景。

代码如下
import sys
from functools import partial
from PySide6.QtGui import QColor
from PySide6.QtWidgets import QApplication, QTableWidget, QPushButton, QTableWidgetItem


colors = [("Red", "#FF0000"),
          ("Green", "#00FF00"),
          ("Blue", "#0000FF"),
          ("Black", "#000000"),
          ("White", "#FFFFFF"),
          ("Electric Green", "#41CD52"),
          ("Dark Blue", "#222840"),
          ("Yellow", "#F9E56d")]


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])


def change_background(button):
    row = button.property("row")
    col = button.property("col")

    if row is not None and col is not None:
        item_color = QTableWidgetItem()
        text = get_rgb_from_hex(table.item(row, 1).text())
        item_color.setBackground(text)
        table.setItem(row, 2, item_color)


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

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)

    button = QPushButton("Click me!")
    button.setProperty("row", i)
    button.setProperty("col", 3)
    button.clicked.connect(partial(change_background, button))

    table.setCellWidget(i, 3, button)


table.show()
table.resize(600, 800)
sys.exit(app.exec())

效果如下图

PySide6 Tutorials (一)表格小部件魔改_第1张图片

涉及知识点
  • 如何获取表格中button所在的行列信息
  • 如何将button信息传递到信号函数中

注:本文为作者原创,转载需注明出处!

你可能感兴趣的:(PySide6,pyqt,pyside6,按钮信号)