如何在 PyQt5 中设置 QTableWidget 的单元格样式?

Posted

技术标签:

【中文标题】如何在 PyQt5 中设置 QTableWidget 的单元格样式?【英文标题】:How can I style the cells of a QTableWidget in PyQt5? 【发布时间】:2021-04-25 22:39:42 【问题描述】:

我是 Qt 和 PyQt 的新手,想知道如何设置 QTableWidget 的单元格样式。例如,我想添加一些 etxra 填充。我尝试像下面的代码一样设置样式表,但它没有任何效果。我也搜索了互联网,但找不到解决方案。

我使用 PyQT5(Arch Linux 上的 python-pyqt5 5.15.4-1)。

这是我的代码:

import sys

from PyQt5.QtWidgets import QApplication,QMainWindow, QTableWidget, QTableWidgetItem


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('Table Test')
        table = QTableWidget(self)
        table.setColumnCount(4)
        table.setRowCount(3)
        for j in range(table.rowCount()):
            for k in range(table.columnCount()):
                table.setItem(j, k, QTableWidgetItem("".format(j, k)))
        self._centralWidget = table
        self.setCentralWidget(self._centralWidget)
        self.resize(500, 200)


def main():
    app = QApplication(sys.argv)
    view = MainWindow()
    view.setStyleSheet("QTableWidget::item padding: 5px")
    view.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

有人可以帮忙吗?

【问题讨论】:

许多类继承自更多“通用”类:QTableWidget 继承自QTableView,它是它的“便利”版本(它提供了自己的私有模型)。谷歌搜索“qtableview padding”首先给出这个结果:How to set the padding of QTableView cells through CSS?(你需要设置一个空边框)。如果您需要更多自定义,则需要更精确,因为它取决于许多方面,并非所有内容都可以通过样式表进行自定义(因为它们只是“实现”了 CSS 概念和语法,但不提供所有 CSS 功能。跨度> @musicamante 非常感谢,这对我很有帮助,让我能够解决问题!我将在回答我自己的问题时总结解决方案。 【参考方案1】:

我自己回答这个问题。我在上面@musicamante 的评论的帮助下找到了解决方案。

将边距设置为 0 成功了:

view.setStyleSheet("QTableWidget::item border: 0px; padding: 5px;")

现在单元格的内边距为 5px。

【讨论】:

以上是关于如何在 PyQt5 中设置 QTableWidget 的单元格样式?的主要内容,如果未能解决你的问题,请参考以下文章

在pyqt5中设置显示窗口的代码是啥?

如何在 QGridLayout 中设置小部件的顺序

使用 fbs 时无法在 pyqt5 中设置图标

Qt实现单击或双击QTableWidge/View表头进行排序

pyqt5的QListWidget中设置右键菜单

如何在 Pyqt5 .ui 文件中获取子菜单?