将PyQt中的插槽背景颜色更改

3
我希望能够通过插槽改变我的应用程序的颜色。例如,如果用户在qlabel中输入错误数据,则整个QWidget都会变成红色。
只需在show()方法之前的代码中更改颜色即可轻松实现这一点,就像这样:
from PyQt5 import Qt
import sys

app = QtWidgets.QApplication(sys.argv)
window = QWidget()
p = window.palette()
p.setColor(window.backgroundRole(), QtCore.Qt.red)
window.setPalette(p)
window.show()
sys.exit(app.exec_())

但我不知道如何更改插槽中的颜色,如果我的结构是这样的:

class MyWindow(QtWidgets.QWidget):
    def __init__(self, parent=None):
        QtWidgets.QDialog.__init__(self, parent) 
        uic.loadUi("file.ui", self)
        self.sendButton.clicked.connect(self.change_color)

    # what should be in change-color slot?
    def change_color(self):
        #.....?

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

我是否应该在槽函数中调用QWidget的指针?

如何实现正确的功能呢?


我应该如何在槽函数中调用QWidget的指针?当然可以。在Python中,它被称为self。 - Trilarion
1个回答

3

类的实例是您将传递给方法的第一个参数,在您的情况下是self,因此您必须执行以下操作:

def checks(self):
    p = self.palette()
    p.setColor(self.backgroundRole(), QtCore.Qt.red)
    self.setPalette(p)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接