Python 2.7.3でPyQt 4.9.1、Qt 4.8.1で書かれたQGISプラグインがあります。このプラグインを実行すると、すべての機能が正常に動作します。しかし、ウィンドウを閉じてもう一度やり直すと、すべての機能が2回発生します。その後、もう一度クローズ/オープンして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)
私は「プラグイン・ビルダー」からボタンをクリックしてプラグインをリロードした場合、それは1から再び開始します。
私はビューの作成者が失われた(プラグインはテーブルビューアです)が、ウィンドウを閉じて開いて、セルを消去せずにそこに再び置くことができないことを言及する必要があります。
あなたはたぶん 'run'を呼び出すたびに' connect'するでしょう。修正することができます。 'Qt.UniqueConnection'を' self.dlg.pushButton_2.clicked.connect(self.openFile、Qt.UniqueConnection) 'のように' connect'に渡すことでこれを修正できます。これはむしろデザインが悪いようで、信号とスロットをどこか別の場所に接続する必要がありますが、提供したコードを手助けすることはできません。 – tobilocker
self.availableLayersは毎回呼び出されますが、それはすべきですが、残りの関数はpushButtonsを押すときにのみ実行されると思いましたか? clicked.connectの動作はどうですか? – adamczi
@adamczi。さて、あなたはすでに、それがどのように機能するのかではないことをあなた自身で確認したようです。 'connect'を呼び出すたびに、別の接続が追加されます。明らかに、 'run'メソッドではなく、ダイアログの設定メソッドで接続を一度*行う必要があります。 – ekhumoro