尝试简单的 QPushButton 背景颜色更改 [重复]

Posted

技术标签:

【中文标题】尝试简单的 QPushButton 背景颜色更改 [重复]【英文标题】:Attempting Simple QPushButton Background color changing [duplicate] 【发布时间】:2019-10-02 16:15:44 【问题描述】:

我需要帮助通过更改 Q 按钮的背景颜色来创建简单的“闪烁”效果。我想如果我能足够快地改变两种颜色之间的背景颜色,我就可以产生这种闪烁效果。但是,虽然我可以将背景颜色设置为一种颜色,但我不知道如何在两种颜色之间快速切换。我尝试使用循环,但我的输出 GUI 只保留一种颜色。我是这类东西的初学者,所以我可能缺少一个简单的解决方案。

我有所有必要的包和所有东西,所以为了简单起见,我只包括了处理背景颜色的按钮部分,这就是我认为我的问题所在。

self.powerup_button = QtWidgets.QPushButton(self.centralwidget)

count = 0

while count < 100:


   self.powerup_button.setStyleSheet("background-color: none")
   count = count + 1

   self.powerup_button.setStyleSheet("background-color: green")
   count = count + 1

我以为while循环会让按钮在两种颜色之间切换,创造出我想要的闪烁效果,但我错了。

【问题讨论】:

你在改变颜色后尝试过使用 self.powerup_button.repaint() 或 self.powerup_button.update() 吗? 【参考方案1】:

试试看:

import sys
from PyQt5 import QtWidgets, QtCore

class MyWindow(QtWidgets.QMainWindow): 
    def __init__(self):
        super().__init__()

        self.flag = True

        self.powerup_button = QtWidgets.QPushButton("Button")
        self.setCentralWidget(self.powerup_button)

        timer = QtCore.QTimer(self, interval=1000)
        timer.timeout.connect(self.update_background)
        timer.start()  

    def update_background(self):
        if self.flag:
            self.powerup_button.setStyleSheet("background-color: none;")
        else:
            self.powerup_button.setStyleSheet("background-color: green;")  
        self.flag = not self.flag            


if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    myWindow = MyWindow()
    myWindow.show()
    app.exec_()       

【讨论】:

谢谢!这很好用。我似乎无法将它附加到我的 Designer 生成的文件中,它没有错误,但不会显示闪烁,我不知道为什么。

以上是关于尝试简单的 QPushButton 背景颜色更改 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

PyQt 在不重置样式的情况下更改 QPushButton 背景颜色

按下时更改 QPushButton 颜色

禁用为按钮设置可检查 QPushbutton 的背景颜色

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

如何在qt中为QPushButton的背景颜色设置动画?

如何同时对 QPushButton 应用悬停和格式化?