2017-08-06 5 views
-1

QGISのQtプラグインを書きました。その中に出力フォルダを参照するQPushButton browse_btnがあります。 私はQFileDialog.getExistingDirectory関数を使用しており、すべて正常に動作します。しかし、プラグインを閉じてもう一度開くと、プッシュボタンをクリックしてパスを追加すると、パスを選択した後にパスを選択するための開いたウィンドウが再び開きます。私はオープンプラグイン閉じた場合は、再度「パスを選択]ウィンドウが3時間を再開のように...QFileDialogが再開し続ける

同様の問題is still open herein comments hereを、おそらくsolved hereが、私はそれを適用することはできませんありませんコードが存在しないためだろう私の問題を解決する。

正確なコードは以下の通りです:

self.dlg.browse_btn.clicked.connect(self.set_output) 

def set_output(self): 
    folder_path = str(QFileDialog.getExistingDirectory(self.dlg, u"Pick a folder")) 
    if not folder_path: 
     return None 

私が開閉するたびにプラグイン別々の接続がself.dlg.browse_btn.clicked.connect(self.set_output)で作成された、と私はQGIS

+1

にあなたの接続線を変更します。 – JLev

+0

@JLev簡単なサンプルコードを提供していただけますか?私はちょうどQtを使い始めています – Vasily

+1

なぜ信号が放射されるたびに信号を接続していますか?一度実行されるようなシグナル(ウィジェットのコンストラクタなど)を接続するだけで済みます。 – Mike

答えて

1

を再起動した後、それだけで切断するので、この問題が発生したと思いますこれを試してください - クラス(またはdlg)にbooleanフラグisConnectedを追加し、このフラグをfalseに初期化してください。

そして、あなたはそれがこれまでに実行されていない場合にのみ、QFileDialogを一度だけ、それを接続するか、または実行するブール値のフラグを設定することができ、この

if (!self.isConnected): 
    self.dlg.browse_btn.clicked.connect(self.set_output) 
    self.isConnected = true 
関連する問題