PyQt: настройка цвета кнопки на Big Sur

#pyqt #macos-big-sur #qtwidgets

#pyqt #macos-big-sur #qtwidgets

Вопрос:

В Ubuntu 18.04 следующий код создает простую кнопку с зеленым фоном и красным текстом; В Big Sur фон остается неизменным — есть мысли?

 from PyQt5 import QtWidgets as qtw
from PyQt5 import QtGui as qtg

app = qtw.QApplication([])

button = qtw.QPushButton('Pushbutton')
palette = button.palette()
palette.setColor(qtg.QPalette.Button, qtg.QColor('green'))
palette.setColor(qtg.QPalette.ButtonText, qtg.QColor('red'))
button.setPalette(palette)
button.show()

app.exec()
 

Результат в Big Sur
Результат в Ubuntu 18.04

Комментарии:

1. Стили не всегда соответствуют палитре, и это особенно актуально для Windows и macOS, как объясняется в документации : » Предупреждение: некоторые стили не используют палитру для всего рисования, например, если они используют собственные движки тем. Это относится как к стилям Windows Vista, так и к стилям macOS «.. Если вы хотите быть уверены, что кнопка использует ваши цвета, вам нужно использовать таблицы стилей. Попробуйте использовать basic button.setStyleSheet('background: green; color: red;'); , но помните, что если вы хотите установить таблицу стилей для родительского ->

2. -> или приложение, вы не должны использовать общие свойства, подобные этому, но использовать селекторы , например: app.setStyleSheet('QPushButton { background: green; color: red; }') . Если вы используете общие свойства для родительских элементов, вы рискуете непредвиденным поведением для сложных виджетов, таких как QComboBox или QScrollBar (включая полосы прокрутки для областей прокрутки).

3. Спасибо, это работает!