QFileDialog不断重新开放
问题描述:
我为QGIS写了一个Qt插件,里面有一个QPushButton browse_btn
来浏览输出文件夹。 我使用QFileDialog.getExistingDirectory
函数,它一切正常。但是,如果我关闭插件并再次打开它,然后单击按钮添加路径,选择路径后打开的窗口将在我选择路径或关闭后重新打开。如果我关闭插件再次打开它的“选择路径”窗口将重新开放3次等等...QFileDialog不断重新开放
类似的问题is still open here和in 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
答
试试这个 - 将一个布尔标志isConnected添加到你的类(或dlg)并将此标志初始化为false。
那么你的连接线改到这个
if (!self.isConnected):
self.dlg.browse_btn.clicked.connect(self.set_output)
self.isConnected = true
您可以设置一个布尔标志,它只有一次连接或运行QFileDialog只有当它没有跑这么远。 – JLev
@JLev您能否提供一个简单的示例代码?我刚开始使用Qt – Vasily
为什么每次发射信号时都要连接信号?你只需要将这样的信号连接到一个被执行一次的地方(例如构件的构造函数)。 – Mike