2017-08-09 114 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