【问题标题】:QFileDialog keeps reopeningQFileDialog 不断重新打开
【发布时间】:2017-08-06 14:30:10
【问题描述】:

我为QGIS 编写了一个Qt 插件,在其中我有一个QPushButton browse_btn 来浏览输出文件夹。 我使用QFileDialog.getExistingDirectory 函数,一切正常。但是,如果我关闭插件并再次打开它,然后单击按钮添加路径,选择路径的打开窗口将在我选择路径或关闭后重新打开。如果我关闭插件并再次打开它,“选择路径”窗口将重新打开 3 次,依此类推...

类似的问题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 后断开连接

【问题讨论】:

  • 您可以设置一个布尔标志以仅连接一次或仅在 QFileDialog 尚未运行时才运行它。
  • @JLev 你能提供一个快速的示例代码吗?我刚刚开始使用 Qt
  • 为什么每次发出信号时都要连接它?您只需将这样的信号连接到某个执行一次的地方(例如小部件的构造函数)。
  • @Mike 你能提供一个简短的示例代码吗?
  • @Vasily。编辑您的问题并显示所有插件的代码。

标签: qt pyqt pyqt4


【解决方案1】:

试试这个 - 添加一个布尔标志 isConnected 到你的类(或 dlg)并将这个标志初始化为 false。

然后把你的连接线改成这个

if (!self.isConnected):
    self.dlg.browse_btn.clicked.connect(self.set_output)
    self.isConnected = true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    相关资源
    最近更新 更多