PySide2更改表头背景

2024-06-02 09:01:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在拥有的是默认的QTableWidget。我只改变了索引为偶数的行的背景色。我想对表头执行同样的操作。在

enter image description here

我所尝试的-self.horizontalHeaderItem(...).setBackgroundColor(QColor(...))self.horizontalHeaderItem(...).setBackground(QBrush(...))-失败。在

接下来我尝试的是-self.horizontalHeader().setStyleSheet("::section {" "background-color: lightblue; }")-我设法改变了背景颜色。问题是(1)我不太明白这段代码到底是什么,因为我在PySide2文档中找不到它,(2)代码不仅改变了背景,而且改变了许多头的外观特征。在

如何只更改标题背景?或者更一般地说,如何在PySide2中调整表头的外观?在

enter image description here


Tags: 代码self外观背景偶数pyside2背景色setstylesheet
1条回答
网友
1楼 · 发布于 2024-06-02 09:01:51

在这里,我把我在寻找答案的过程中所学到的东西——2个可能的解决方案。在

我想这个问题源于PySide2的notImplementednotDocumentednotExplained问题的复杂混合。我希望将来情况会好转。现在来回答。在

问题可以这样解决(也可能不会):

plt = QPalette()
plt.setColor(QPalette.Button, QColor(128, 0, 0))
my_table_widget.horizontalHeader().setPalette(plt)

QPalette控制控件的颜色。但还有另一层外观控制风格。我在Win10x64上使用PySide2,所以默认样式是windowsvista,总共有3个可用的样式:fusionwindowswindowsvistaWindowsvista样式忽略大多数调色板颜色。因此,要使这种方法起作用,就应该改变整个应用程序的风格(或者只改变一些小部件?)公司名称:

^{pr2}$

我想出的另一个解决方案是(对我来说更可取):

my_table_widget.horizontalHeader().setStyleSheet('''
    ::section {
        background-color: lightgray;
        border-style: flat;
        padding: 0px 5px;
        }''')

连同:

my_table_widget.horizontalHeader().setDefaultAlignment(Qt.AlignLeft | Qt.AlignVCenter)

我想这是一个调整按钮外观的样式表。我不太明白section这个词的意思。此外,要使用这种方法,应该使用google和Qt5文档。应用第二种解决方案后,我的表格看起来如何:

enter image description here

相关问题 更多 >