如何在不使用CSS的情况下更改QPushButton背景颜色

时间:2014-07-30 20:48:12

标签: python pyqt

到目前为止,我只能自定义按钮文字颜色:

button = QtGui.QPushButton()
palette = QtGui.QPalette(button.palette())
palette.setColor(QtGui.QPalette.ButtonText, QtGui.QColor('blue'))
button.setPalette(palette)

但是如何更改按钮背景颜色?

这些都不会改变按钮背景颜色:

    palette.setColor(QtGui.QPalette.Foreground, QtGui.QColor('red'))
    palette.setColor(QtGui.QPalette.Button, QtGui.QColor('red'))
    palette.setColor(QtGui.QPalette.Light, QtGui.QColor('red'))
    palette.setColor(QtGui.QPalette.Midlight, QtGui.QColor('red'))
    palette.setColor(QtGui.QPalette.Dark, QtGui.QColor('red'))
    palette.setColor(QtGui.QPalette.Mid, QtGui.QColor('red'))
    palette.setColor(QtGui.QPalette.Text, QtGui.QColor('red'))
    palette.setColor(QtGui.QPalette.BrightText, QtGui.QColor('red'))
    palette.setColor(QtGui.QPalette.ButtonText, QtGui.QColor('red'))
    palette.setColor(QtGui.QPalette.Base, QtGui.QColor('red'))
    palette.setColor(QtGui.QPalette.Background, QtGui.QColor('red'))
    palette.setColor(QtGui.QPalette.Midlight, QtGui.QColor('red'))
    palette.setColor(QtGui.QPalette.Shadow, QtGui.QColor('red'))
    palette.setColor(QtGui.QPalette.Highlight, QtGui.QColor('red'))
    palette.setColor(QtGui.QPalette.HighlightedText, QtGui.QColor('red'))

1 个答案:

答案 0 :(得分:2)

你需要设置正确的角色"并附加" setAutoFillBackground()":

button = QtGui.QPushButton()
palette = self.button.palette()
role = self.button.backgroundRole() #choose whatever you like
palette.setColor(role, QColor('red'))
button.setPalette(palette)
self.button.setAutoFillBackground(True)