随着重新打开插件,函数被调用的次数越来越多

Functions get called more and more times with reopening plugin

我有一个用 Python 2.7.3 和 PyQt 4.9.1、Qt 4.8.1 编写的 QGIS 插件。当我 运行 这个插件时,每个功能都可以正常工作。但是当我关闭 window 并再次重新打开它时,每个功能都会发生两次。然后我又 close/open 了 3 次,等等,等等

我应该在哪里查找错误?我的 def run(self) 部分看起来像这样:

def run(self):

    self.dlg.show()

    self.availableLayers()

    self.dlg.pushButton_2.clicked.connect(self.openFile)

    self.dlg.pushButton.clicked.connect(self.groupBy)

    self.dlg.toolButton_4.clicked.connect(self.toggleRightPanel)

如果我通过单击 "Plugin Builder" 中的按钮重新加载插件,它将再次从一个开始。

我还应该提到我不想丢失用户创建的视图(插件是 table 查看器),而是能够关闭 window,打开它并拥有它又在那里没有被清除的单元格。

每次调用 connect 时,它都会添加另一个连接 - 即使是在同一个插槽中。因此,您需要将连接从 run() 方法中移出,并将它们放入对话框的设置方法中,以便它们只创建一次。