2016-07-08 7 views
0

私はPyQT4を使ってGUIを作成しています。私はある条件が満たされたときにdefと接続する必要があるボタンを持っています。この条件が満たされない場合、ボタンは別のdefに接続する必要があります。プロットが作成され、PyQTの2つの異なるイベントメソッドに1つのボタンが接続されています

if self.txtAgilent.text() and self.txtBattery.text(): 
     self.connect(self.buttonPlot, SIGNAL('clicked()'), self.plotButtonClicked) 
    else: 
     self.connect(self.buttonPlot, SIGNAL('clicked()'), self.fileErrorMsgBox) 

を上記のように、第一の条件は、(二つのファイルが選択されている、すなわち場合)が満たされている場合 - これまでのところ、これは私が持っているものです。そうでない場合、エラーメッセージボックスがポップアップします。今の問題は、GUI上のプロットボタンを押すたびに、2つのファイルを正常に選択してもエラーメッセージボックスだけがポップアップすることです。

メッセージボックス機能は以下の通りです:

def fileErrorMsgBox(self): 
    w = QWidget() 
    msg = QMessageBox.warning(w, "WARNING", "File(s) not chosen! Please choose a file.") 

どのように私はこの問題を解決するのですか?

+0

あなたが選択したことにより、正確に何を意味しますか、私が見ることができるのは、 '.text()'を呼び出すことによって2つのテキストフィールドの値を取得しようとしていることです。 – danidee

+0

@danidee。 OPは、ユーザがファイルを選択(すなわち選択)することによって2つのテキストフィールドを設定しなければならないことを意味すると考える。 – ekhumoro

答えて

1

最良の方法は、ボタンが接続されているメソッドを試して変更することではありません。代わりに、ボタンを同じメソッドに接続したままで、内ののメソッドがチェックを実行します(選択されているかどうか、またはユースケースにかかわらずテキストボックスに適切なテキストがあります)。

ので、例えば、何かのように:

def __init__(self): 
    self.connect(self.buttonPlot, SIGNAL('clicked()'), self.plotButtonClicked) 

def plotButtonClicked(self): 
    if self.txtAgilent.text() and self.txtBattery.text(): 
     # do what plotButtonClicked did before 
    else: 
     # create and show the error message box 

注意、あなたは本当にこのような接続を行っているのPyQtでnew style signals/slot APIを使用する必要があります。

self.buttonPlot.clicked.connect(self.plotButtonClicked) 
関連する問題