Python 从插槽PyQt更改背景色

Python 从插槽PyQt更改背景色,python,pyqt,pyqt5,Python,Pyqt,Pyqt5,我希望能够从插槽更改我的应用程序的颜色。例如,如果用户在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

我希望能够从插槽更改我的应用程序的颜色。例如,如果用户在
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的指针吗


实现正确功能的方法是什么?

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

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

“我应该在插槽中调用QWidget的指针吗?”当然应该。它在Python中称为self。