-1

After studying various examples in this forum, I tried to change the color of a button when pressed. The button is normally blue, and when it is pressed I want it to turn red. The following code does display a blue button with white text, but it does not change to red when pressed. Please advise. I'm fairly new to learning python/pyqt5.

import sys
from PyQt5.QtWidgets import QWidget, QApplication, QPushButton

class Push_button(QPushButton):
    def __init__(self, parent=None):
        super(Push_button, self).__init__(parent)
        self.setStyleSheet("background-color: rgb(0,0,255); color: rgb(255,255,255); \
                  pressed {background-color : rgb(255,0,0); color: rgb(255,255,255);} ")

class MyWindow(QWidget):
    def __init__(self):
        super().__init__()

        self.myButton = Push_button(self)
        self.myButton.setText("myButton")
        self.myButton.clicked.connect(self.myButtonClicked)

    def myButtonClicked(self):
        print("myButtonClicked")
 
if __name__ == '__main__':
    app = QApplication(sys.argv)

    w = MyWindow()
    w.show()

    sys.exit(app.exec_())
TylerH
  • 20,799
  • 66
  • 75
  • 101
ear1
  • 45
  • 5

1 Answers1

1

You are not using selectors correctly.

Right now your stylesheet sets the blue background color universally, and the red color for classes named "pressed".

        self.setStyleSheet('''
            QPushButton {
                background-color: rgb(0,0,255); color: rgb(255,255,255);
            }
            QPushButton:pressed {
                background-color : rgb(255,0,0); color: rgb(255,255,255);
            }
        ''')

Read more about selector types in the official documentation.

musicamante
  • 41,230
  • 6
  • 33
  • 58