PySide2 - 更改 table header 背景颜色
PySide2 - change table header background color
我现在拥有的是默认的QTableWidget。我只更改了具有偶数索引的行的背景颜色。我想为 table headers.
做同样的事情
我尝试的方法 - self.horizontalHeaderItem(...).setBackgroundColor(QColor(...))
和 self.horizontalHeaderItem(...).setBackground(QBrush(...))
- 失败了。
接下来我尝试了什么 - self.horizontalHeader().setStyleSheet("::section {" "background-color: lightblue; }")
- 我设法改变了背景颜色。问题是 (1) 我不太明白这段代码实际上是什么,因为我在 PySide2 文档中找不到它,(2) 代码不仅改变了背景,而且改变了许多 header 外观特征。
如何只更改 header 背景?或者更一般地说 - 如何在 PySide2 中调整 table header 外观?
在这里,我 post 我在寻求答案的过程中学到的东西 - 2 种可能的解决方案。
我猜这个问题源于 PySide2 的 notImplemented
、notDocumented
、notExplained
问题的一些纠结混合。我希望未来情况会有所好转。现在来回答。
问题可能会这样解决(也可能不会):
plt = QPalette()
plt.setColor(QPalette.Button, QColor(128, 0, 0))
my_table_widget.horizontalHeader().setPalette(plt)
QPalette
控制小部件的颜色。但是还有另一层外观控制——样式。我在 Win10x64 上使用 PySide2,所以默认样式是 windowsvista
,总共有 3 种样式可用:fusion
、windows
、windowsvista
。 Windowsvista
样式会忽略大部分调色板颜色。因此,要使这种方法起作用,应该更改整个应用程序的样式(或仅更改某些小部件?):
app.setStyle(QStyleFactory.create('fusion'))
我想出的另一个解决方案是(我更喜欢):
my_table_widget.horizontalHeader().setStyleSheet('''
::section {
background-color: lightgray;
border-style: flat;
padding: 0px 5px;
}''')
连同:
my_table_widget.horizontalHeader().setDefaultAlignment(Qt.AlignLeft | Qt.AlignVCenter)
我猜这是一种 sheet 调整按钮外观的样式。我不太明白section
这个词的意思。此外,要使用这种方法,应该使用 google 和 Qt5 文档。我的 table 使用第二种解决方案时的外观:
我现在拥有的是默认的QTableWidget。我只更改了具有偶数索引的行的背景颜色。我想为 table headers.
做同样的事情我尝试的方法 - self.horizontalHeaderItem(...).setBackgroundColor(QColor(...))
和 self.horizontalHeaderItem(...).setBackground(QBrush(...))
- 失败了。
接下来我尝试了什么 - self.horizontalHeader().setStyleSheet("::section {" "background-color: lightblue; }")
- 我设法改变了背景颜色。问题是 (1) 我不太明白这段代码实际上是什么,因为我在 PySide2 文档中找不到它,(2) 代码不仅改变了背景,而且改变了许多 header 外观特征。
如何只更改 header 背景?或者更一般地说 - 如何在 PySide2 中调整 table header 外观?
在这里,我 post 我在寻求答案的过程中学到的东西 - 2 种可能的解决方案。
我猜这个问题源于 PySide2 的 notImplemented
、notDocumented
、notExplained
问题的一些纠结混合。我希望未来情况会有所好转。现在来回答。
问题可能会这样解决(也可能不会):
plt = QPalette()
plt.setColor(QPalette.Button, QColor(128, 0, 0))
my_table_widget.horizontalHeader().setPalette(plt)
QPalette
控制小部件的颜色。但是还有另一层外观控制——样式。我在 Win10x64 上使用 PySide2,所以默认样式是 windowsvista
,总共有 3 种样式可用:fusion
、windows
、windowsvista
。 Windowsvista
样式会忽略大部分调色板颜色。因此,要使这种方法起作用,应该更改整个应用程序的样式(或仅更改某些小部件?):
app.setStyle(QStyleFactory.create('fusion'))
我想出的另一个解决方案是(我更喜欢):
my_table_widget.horizontalHeader().setStyleSheet('''
::section {
background-color: lightgray;
border-style: flat;
padding: 0px 5px;
}''')
连同:
my_table_widget.horizontalHeader().setDefaultAlignment(Qt.AlignLeft | Qt.AlignVCenter)
我猜这是一种 sheet 调整按钮外观的样式。我不太明白section
这个词的意思。此外,要使用这种方法,应该使用 google 和 Qt5 文档。我的 table 使用第二种解决方案时的外观: