Tengo un plugin que tiene una conexión psycopg2 a una base de datos PostGIS. Cuando cierro GUI con el botón X y lo abro de nuevo, todos los widgets se llenan con los datos de antes. Parece que la X sólo oculta la GUI. Por lo tanto establezco el evento de cierre en el gui con
def closeEvent(self, event):
qgis.utils.reloadPlugin('import_PostGis')
con el methon reloadPlugin que encontré en el archivo utils de QGIS:
def reloadPlugin(packageName):
""" unload and start again a plugin """
Cuando el plugin se reinicia no descarga el plugin de la barra de herramientas sino que crea otro icono de este plugin.
def initGui(self):
"""Create the menu entries and toolbar icons inside the QGIS GUI."""
icon_path = ':/plugins/import_PostGIS/icon.png'
self.add_action(
icon_path,
text=self.tr(u'PostGis Import'),
callback=self.run,
parent=self.iface.mainWindow())
def unload(self):
"""Removes the plugin menu item and icon from QGIS GUI."""
for action in self.actions:
self.iface.removePluginMenu(
self.tr(u'&PostGis Import'),
action)
self.iface.removeToolBarIcon(action)
Así que cada vez que cierro el plugin se genera un nuevo plugin en la barra de herramientas. Hay algo mal en mi código o hay otra posibilidad de borrar los widgtes del plugin antes de iniciarlo de nuevo?