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