私は私PyQt4 /のpython3 GUIでいくつかのQComboBoxesを持っており、それらが初期化中に、データベースからいくつかのエントリで満たされています。初期CurrentIndexは0に設定されています。また、コンボボックス内の項目の言語を変更するチェックボックスがあります。現在のユーザー選択を保持するために、私は現在のアイテムのインデックスをバックアップし、翻訳されたアイテムでComboBoxを埋めた後にsetCurrentIndexをこの番号にバックアップします。これらのすべてのアクションは、currentIndexChangedシグナルを送出します。いくつかのプロットが表示されているQComboBoxesで選択した項目に基づいて別のユーザーとの対話:PyQtは、QComboBox
。ユーザーがComboBoxの現在のアイテムを変更するとすぐに、プロットをオンラインで再描画することが考えられます。そして、ここで私は、プロットを再描画場合currentIndexChangedたびに信号がemitedされ、私は初期化中に、翻訳のチェックボックスの選択が変更された場合も、数回それを再描画しますので、問題を抱えています。
これらのケースを分離するための最良の方法は何ですか?原則として、私はプログラム的な現在のIndex Changeをユーザから分離し、後のケースでのみプロットを更新する必要があります(GUIの初期化中に、プログラムでUpdate Plot関数を1回呼び出すことができます)。私は何かの信号を書い/書き直すべきですか?もしそうなら、私はこれまでにこれをしたことがなく、ヒントや良い例を歓迎するでしょう。別の信号を使用しますか?あるいは、すべての信号を一時的にブロックする方法がありますか?
ありがとう!私はblockSignalsソリューションを利用しました。実際には、QTデザイナーを使用していて、例のようにプログラムレイアウトを使用していないと、実際に "信号を接続する前にすべての初期化を行う"ことが可能ですか?どの時点で信号が有効になりますか? – Katya
@Katya。 Qt Designerでは、既存の信号を既存のスロットに接続することができます(自分のハンドラとは対照的に)。したがって、実際には、アプリケーションが非常にシンプルでない限り、ほぼすべての信号がGUIに接続されている必要があります。個人的には、私はguiをレイアウトするためにQt Designerを使用し、シグナルを接続するのはごく稀です。 – ekhumoro