#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()
Комментарии:
1. Стили не всегда соответствуют палитре, и это особенно актуально для Windows и macOS, как объясняется в документации : » Предупреждение: некоторые стили не используют палитру для всего рисования, например, если они используют собственные движки тем. Это относится как к стилям Windows Vista, так и к стилям macOS «.. Если вы хотите быть уверены, что кнопка использует ваши цвета, вам нужно использовать таблицы стилей. Попробуйте использовать basic
button.setStyleSheet('background: green; color: red;');
, но помните, что если вы хотите установить таблицу стилей для родительского ->2. -> или приложение, вы не должны использовать общие свойства, подобные этому, но использовать селекторы , например:
app.setStyleSheet('QPushButton { background: green; color: red; }')
. Если вы используете общие свойства для родительских элементов, вы рискуете непредвиденным поведением для сложных виджетов, таких как QComboBox или QScrollBar (включая полосы прокрутки для областей прокрутки).3. Спасибо, это работает!