如何在不同的功能中改变 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 的颜色? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
PyQt5 QPushButton setSyleSheet 按下时不改变按钮颜色
如何阻止空格键在 PyQt5 中触发聚焦的 QPushButton?