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