2017-08-06 29 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

您可以設置一個布爾標誌,它只有一次連接或運行QFileDialog只有當它沒有跑這麼遠。 – JLev

+0

@JLev您能否提供一個簡單的示例代碼?我剛開始使用Qt – Vasily

+1

爲什麼每次發射信號時都要連接信號?你只需要將這樣的信號連接到一個被執行一次的地方(例如構件的構造函數)。 – Mike

回答

1

試試這個 - 將一個布爾標誌isConnected添加到你的類(或dlg)並將此標誌初始化爲false。

那麼你的連接線改到這個

if (!self.isConnected): 
    self.dlg.browse_btn.clicked.connect(self.set_output) 
    self.isConnected = true 
相關問題