Изменить стиль и цвет фона окна виджета в Python - PullRequest
0 голосов
/ 02 января 2019

enter image description here

def color_picker(self):
    color = QtGui.QColorDialog.getColor()
    self.setStyleSheet("QWidget { background-color: %s}" % color.name())
    global selectedcolor
    selectedcolor=color.name()
    print(selectedcolor)
    global RGBcolorfromcolorpicker
    RGBcolorfromcolorpicker=selectedcolor.lstrip('#')

    #This line doesn't work.
    self.QColorDialog.setStyleSheet('QTabBar::tab{background-color: red;}')

    self.send_rgb_color()

1 Ответ

0 голосов
/ 03 января 2019

Вместо того, чтобы просто использовать статический метод, вы можете использовать объект класса, в этом случае я создал класс, который уже реализует функциональность изменения цвета:

from PyQt4 import QtCore, QtGui

class ColorDialog(QtGui.QColorDialog):
    def __init__(self, initial=QtGui.QColor(), parent=None):
        super(ColorDialog, self).__init__(parent)
        self.setOption(QtGui.QColorDialog.DontUseNativeDialog)
        self.currentColorChanged.connect(self.onCurrentColorChanged)
        self.onCurrentColorChanged(self.currentColor())

    @QtCore.pyqtSlot(QtGui.QColor)
    def onCurrentColorChanged(self, color):
        self.setStyleSheet("QColorDialog { background-color: %s}" % color.name())

if __name__ == '__main__':
    import sys
    app = QtGui.QApplication(sys.argv)
    w = ColorDialog()
    if w.exec_() == QtGui.QDialog.Accepted:
        print(w.currentColor())
...