Как поменять цвет у виджета 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);")
У меня работает.



