Здесь я публикую то, что узнал в своем поиске ответа - 2 возможных решения.
Я полагаю, что проблема связана с некой запутанной смесью проблем notImplemented
, notDocumented
, notExplained
с PySide2. Я надеюсь, что в будущем ситуация изменится к лучшему. Теперь к ответу.
Проблема может быть решена так (а может и нет):
plt = QPalette()
plt.setColor(QPalette.Button, QColor(128, 0, 0))
my_table_widget.horizontalHeader().setPalette(plt)
QPalette
контролирует цвета виджетов. Но есть еще один слой управления внешностью - стиль. Я использую PySide2 на Win10x64, поэтому стиль по умолчанию - 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)
Полагаю, это таблица стилей для настройки внешнего вида кнопок. Я не совсем понимаю значение слова section
. Более того, чтобы использовать этот подход, нужно использовать google и документацию Qt5. Как выглядит моя таблица с применением второго решения: