2017-08-09 208 views
4

我希望能够从插槽中更改我的应用程序的颜色。例如,如果用户输入错误的数据到qlabel中,整个QWidget变成红色。从插槽PyQt更改背景颜色

这是很容易只是之前的方法显示(改变代码的颜色),就像这样:

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指针吗?

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

+0

“我应该以某种方式调用QWidget的指针,在槽?”当然你应该。它在Python中被称为self。 – Trilarion

回答

2

的类的实例是,你传递给你的方法和你的情况下,第一个参数是self,所以你必须做到以下几点:

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

非常感谢..! – John