Как поменять цвет у виджета QDial в PyQT5 или PySide2

В setStyleSheet установлен цвет черный, но виджет отображается как розовый.
Есть ли способ поменять цвет на черный?

from PySide2 import QtWidgets
import sys


class Test(QtWidgets.QWidget):
    def __init__(self,parent=None):
        QtWidgets.QWidget.__init__(self,parent)
        self = QtWidgets.QDial(self)
        self.resize(300,300)
        self.setStyleSheet('background-color:#0f0d0e; border: 0px;')


if __name__ == '__main__':
    app =  QtWidgets.QApplication(sys.argv)
    window = Test()
    window.show()
    sys.exit(app.exec_())

введите сюда описание изображения

Хотелось бы получить:

введите сюда описание изображения


Ответы (2 шт):

Автор решения: S. Nick

Мне, как и вам, поменять цвет виджета QDial, используя таблицы стилей, не удалось.

Я также попробовал изменять цвета палитры для QDial и некоторых виджетов, близких по смыслу с ним.

Поменять цвет виджета QDial на сегодня нельзя, т.к. QDial вообще не поддерживает таблицы стилей.

import sys
import random
from PyQt5 import QtCore, QtGui, QtWidgets


class Widget(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('PyQt5 изменяет палитру динамически')
       
        self.label = QtWidgets.QLabel("Hello Label Label Label", 
            maximumHeight=70, alignment=QtCore.Qt.AlignCenter)
        self.dial = QtWidgets.QDial(notchesVisible=True)
        self.slider = QtWidgets.QSlider(QtCore.Qt.Horizontal)
        self.spinBox = QtWidgets.QSpinBox(prefix="Hello   ", suffix="   SpinBox", 
            alignment=QtCore.Qt.AlignCenter)

        layout = QtWidgets.QVBoxLayout(self)
        for obj in (
            QtWidgets.QRadioButton("Hello QRadioButton", checked=True), 
            self.label,
            self.spinBox,
            QtWidgets.QPushButton("Hello Button"),
            self.dial,
            self.slider,
        ):
            layout.addWidget(obj)

        self.timer = QtCore.QTimer(self)
        self.timer.timeout.connect(self.on_timeout)
        QtCore.QTimer.singleShot(2000, lambda: self.timer.start(2000))
        self.num = 0

    @QtCore.pyqtSlot()
    def on_timeout(self):
        pal   = QtWidgets.QApplication.palette()
        palette = self.palette()
        color = QtGui.QColor(*random.sample(range(256), 3))  
        pal.setColor(QtGui.QPalette.Button, color)
        
        palette.setColor(QtGui.QPalette.Window, QtGui.QColor(*random.sample(range(256), 3)))
        palette.setColor(QtGui.QPalette.WindowText, QtGui.QColor(*random.sample(range(256), 3)))
        palette.setColor(QtGui.QPalette.Base, QtGui.QColor(*random.sample(range(256), 3)))
        palette.setColor(QtGui.QPalette.AlternateBase, QtGui.QColor(*random.sample(range(256), 3)))
        palette.setColor(QtGui.QPalette.Text, QtGui.QColor(*random.sample(range(256), 3)))
        palette.setColor(palette.Button, QtGui.QColor(*random.sample(range(256), 3)))
        palette.setColor(palette.ButtonText, QtGui.QColor(*random.sample(range(256), 3)))
        palette.setColor(QtGui.QPalette.BrightText, QtGui.QColor(*random.sample(range(256), 3)))
        palette.setColor(QtGui.QPalette.Highlight, QtGui.QColor(*random.sample(range(256), 3)))
        palette.setColor(QtGui.QPalette.HighlightedText, QtGui.QColor(*random.sample(range(256), 3)))

        self.setPalette(pal)
        self.setPalette(palette)

        self.dial.setValue(self.num)
        self.slider.setValue(self.num)
        self.spinBox.setValue(self.num)
        self.num += 1
        if self.num > 100: self.num = 0
        currentTime = QtCore.QTime.currentTime()
        timeTxt = currentTime.toString('hh:mm:ss')
        self.label.setText(timeTxt)

def create_palette():
    palette = QtGui.QPalette()
    palette.setColor(QtGui.QPalette.Window,          QtGui.QColor(0, 0, 0))
    palette.setColor(QtGui.QPalette.WindowText,      QtCore.Qt.white)
    palette.setColor(QtGui.QPalette.Base,            QtGui.QColor(0, 0, 0))
    palette.setColor(QtGui.QPalette.AlternateBase,   QtGui.QColor(0, 0, 0))
    palette.setColor(QtGui.QPalette.ToolTipBase,     QtGui.QColor(0, 0, 0))
    palette.setColor(QtGui.QPalette.Text,            QtCore.Qt.white)
    palette.setColor(QtGui.QPalette.Button,          QtGui.QColor(0, 0, 0))
    palette.setColor(QtGui.QPalette.ButtonText,      QtCore.Qt.white)
    palette.setColor(QtGui.QPalette.BrightText,      QtGui.QColor(0, 0, 0))
    palette.setColor(QtGui.QPalette.Highlight,       QtGui.QColor(0, 0, 0))
    palette.setColor(QtGui.QPalette.HighlightedText, QtGui.QColor(220, 0, 0))
    return palette


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    
    app.setStyle('Fusion')       #!!! 
    app.setFont(QtGui.QFont("Times", 15, QtGui.QFont.Bold))
    QtWidgets.QApplication.setPalette(create_palette())
    
    w = Widget()
    w.resize(300, 500)
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка
Автор решения: Сергей

Метод setStyleSheet в помощь.

.setStyleSheet("background-color: rgb(255, 69, 0);\n"
               "font: 9pt \"MS Shell Dlg 2\";\n"
               "color: rgb(255, 255, 255);")

У меня работает.

Скрин

→ Ссылка