pyqt5チェックされているチェックボックスに応じて、ボタンの機能を変更するよりエレガントな方法はありますか?

AlexK:

私は初心者で、PyQT5モジュールをいじって、小さなプログラムのGUIを作成する方法を学びます。

3つのチェックボックスと1つのボタンを備えた小さなGUIを作成しました。チェックボックスの機能は変更されます。

私の現在の実装は次のようになります:

#Checkboxes and button logic
def stateChanged(self):
    if self.GetErrorsBox.isChecked() and self.GetSpecsBox.isChecked() and self.GetConfigBox.isChecked():
        self.execButton.clicked.connect(lambda: self.getErrors())
        self.execButton.clicked.connect(lambda: self.copyConfig())
        self.execButton.clicked.connect(lambda: self.getSpecs())

    elif self.GetErrorsBox.isChecked() and self.GetSpecsBox.isChecked():
        self.execButton.clicked.connect(lambda: self.getSpecs())
        self.execButton.clicked.connect(lambda: self.getErrors())

    elif self.GetErrorsBox.isChecked() and self.GetConfigBox.isChecked():
        self.execButton.clicked.connect(lambda: self.getErrors())
        self.execButton.clicked.connect(lambda: self.getSpecs())

    elif self.GetSpecsBox.isChecked() and self.GetConfigBox.isChecked():
        self.execButton.clicked.connect(lambda: self.copyConfig())
        self.execButton.clicked.connect(lambda: self.getSpecs())

    elif self.GetSpecsBox.isChecked():
        self.execButton.clicked.connect(lambda: self.getSpecs())

    elif self.GetErrorsBox.isChecked():
        self.execButton.clicked.connect(lambda: self.getErrors())

    elif self.GetConfigBox.isChecked():
        self.execButton.clicked.connect(lambda: self.copyConfig())

質問:これらすべてのIFおよびELIFをより読みやすいものにリファクタリングする方法はありますか?

私はので、私は、将来的にはさらに別のチェックボックスを追加することができ、本当にのIFとELIFsを追加し続ける必要はありません。私は次のヤンデブになりたくないです、笑。

ティエリー・ラトゥイユ:

あなたはすべてを必要とせずelif、ただ次のようにしてください:

if self.GetSpecsBox.isChecked():
    self.execButton.clicked.connect(lambda: self.getSpecs())

if self.GetErrorsBox.isChecked():
    self.execButton.clicked.connect(lambda: self.getErrors())

if self.GetConfigBox.isChecked():
    self.execButton.clicked.connect(lambda: self.copyConfig())

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ