如何在不同的功能中改变 QPushButton 的颜色? [复制]

Posted

技术标签:

【中文标题】如何在不同的功能中改变 QPushButton 的颜色? [复制]【英文标题】:How to change color of QPushButton in different function? [duplicate] 【发布时间】:2019-07-01 12:21:12 【问题描述】:

我有一个继承自 QWidget 的类。

按钮点击与some_function相关。

我想在函数开始执行其核心功能之前将 PushButton 颜色更改为红色,并在核心完成时将其更改为绿色,但我不知道如何在 some_button之外更改 PushButton 颜色>.

编辑:我按照@dudakl 的建议将 button 添加到实例属性中,但是在整个函数运行完成后颜色仍然会发生变化,而不是在开始时变为红色,最后变为绿色。

from PyQt5.QtWidgets import *

class AppWidget(QWidget):


    def __init__(self, parent = None):
        super(AppWidget, self).__init_(parent)

        mainLayout = QGridLayout()
        self.some_button()
        mainLayout.addWidget(self.someButton)

        self.setLayout(mainLayout)
        self.show()


    def some_button(self):

        self.someButton = QGroupBox('Some GroupBox')
        layout = QVBoxLayout()

        button = QPushButton('Button')
        button.clicked.connect(self.some_function)
        layout.addWidget(button)


    def some_function(self):

        #change color to red
        #do something
        #change color to green

【问题讨论】:

你什么时候延迟执行“做某事”?如果它需要超过 10 毫秒,那么你不应该在 GUI 线程中运行它,而是在另一个线程中运行,否则它会冻结 GUI 下面的代码是如何在另一个线程gist.github.com/eyllanesc/27d88036c8e769fc4e2aad342b7fdca7执行这个任务的示例 【参考方案1】:

您可以将按钮添加到实例属性中:

self.button = QPushbutton('Button')

然后用

在“some_function”中解决它
self.button.something

查看this 帖子的颜色变化:

【讨论】:

我试过了,但是整个功能完成后按钮的颜色会发生变化。对我来说最重要的是,在函数运行时将颜色变为红色,并在完成后变为绿色。该功能的核心需要一些时间来处理,颜色用于显示用户是否可以单击另一个功能。您在其原始功能之外访问按钮的颜色是正确的,但它仍然不能解决我的问题。还是谢谢。 您需要在设置按钮颜色后触发屏幕刷新。所以流程是:#change color to red #refresh screen #do something #change color to green #refresh screen

以上是关于如何在不同的功能中改变 QPushButton 的颜色? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何正确设置 QPushButton 的颜色?

请问如何在QPushbutton上填充图片

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

如何阻止空格键在 PyQt5 中触发聚焦的 QPushButton?

我们可以连接 QPushButton 来改变 QSlider 的值吗?

QPushButton:如何知道“释放”信号是不是会跟随“点击”信号?