PyQt5 QPushButton setSyleSheet 按下时不改变按钮颜色

Posted

技术标签:

【中文标题】PyQt5 QPushButton setSyleSheet 按下时不改变按钮颜色【英文标题】:PyQt5 QPushButton setSyleSheet does not change button color when pressed 【发布时间】:2021-03-23 19:13:17 【问题描述】:

在研究了这个论坛中的各种示例后,我尝试更改按钮按下时的颜色。该按钮通常是蓝色的,当按下它时我希望它变成红色。以下代码确实显示了一个带有白色文本的蓝色按钮,但按下时它不会变为红色。请指教。我对学习 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_())

【问题讨论】:

【参考方案1】:

您没有正确使用选择器。

现在,您的样式表通用设置蓝色背景色,名为“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);
            
        ''')

在官方文档中阅读有关selector types 的更多信息。

【讨论】:

感谢您的帮助。为了完整起见,这里是更新后的代码:

以上是关于PyQt5 QPushButton setSyleSheet 按下时不改变按钮颜色的主要内容,如果未能解决你的问题,请参考以下文章

python pyqt5 按钮 QPushButton

PyQt5:查找点击了哪个 QPushButton

《PyQT5软件开发 - 控件篇》第1章 按钮-1(QPushButton)

PyQt5:可以通过 QPushButton 触发 QAction 功能吗

Pyqt5 Python3 QPushButton 默认 StrongFocus 颜色或选项卡选择颜色

PyQt5:QPushButton 上的 setParent 不会将其添加到父级