4 votos

PyQGIS recarga un plugin QGIS

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?

2voto

runrig Puntos 5422

Añadir una barra de herramientas:

# Create toolbar
self.toolbar = self.iface.addToolBar("My Toolbar")
self.toolbar.setObjectName("My toolbar Plugin")
self.toolbar.addAction(self.action)
self.btn = QAction(QIcon(":/plugins/import_PostGIS/icon.png"), "button1",  self.iface.mainWindow())
QObject.connect(self.btn, SIGNAL("triggered()"), self.method)
self.toolbar.addActions([self.btn])

y quitando:

def unload(self):
    del self.toolbar

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X