[Gfoss] Associare un'icona ad un plugin

Buongiorno!
Non riesco ad associrare l’icona al plugin.
Quando su Qgis seleziono dal menu dei plugins quello che sto creando, non mi esce alcuna icona avendo opportunamente indicato nel file dell’esecuzione del plugin il percorso dell’icona.
Vi riporto di seguito il frammento di codice:

def initGui(self):

create action

self.action = QAction(QIcon(‘:/plugins/Max_covering/icona.png’), ‘Max Covering’, self.iface.mainWindow())
self.action.setWhatsThis(‘Configuration for Max Covering plugin’)
QObject.connect(self.action, SIGNAL(‘triggered()’), self.run)

Create about button

self.helpaction = QAction(QIcon(“:/iconhelp.png”), “About”, self.iface.mainWindow())
self.helpaction.setWhatsThis(“Help for Max Covering”)
QObject.connect(self.helpaction, SIGNAL(“activated()”), self.helprun)

add toolbar button and menu item

self.iface.addToolBarIcon(self.action)
self.iface.addPluginToMenu(‘&Max Covering’, self.action)
self.iface.addPluginToMenu(“&Max Covering”, self.helpaction)

Come potete notare ho provato in 2 modi diversi, in self.action specificando tutto il precorso e in self.helpaction ho specificato sl il nome dell’icona purtroppo non mi funziona in nessuno dei 2 modi, eppure nella cartella del plugin ho i 2 file .png spceificati nel codice.
Qualcuno può aiutarmiiii???

Grazie in anticipo


Michela

prova con questo per non diventare matta con i path e simili:

import os


def initGui(self):
icon_plugin = (‘%s%s’) % (filepath, os.path.join(os.sep, ‘icons’,‘miaIcona.png’))
self.actionPlugin = QAction(QIcon(icon_plugin), “Mio plugin”, self.iface.mainWindow())
self.actionPlugin.setWhatsThis(“Il mio plugin”)
QObject.connect(self.actionPlugin, SIGNAL(“activated()”), self.runPlugin)

Salve Michela,

2011/5/2 Michela Coletta <michela.coletta@gmail.com>

self.action = QAction(QIcon(‘:/plugins/Max_covering/icona.png’), ‘Max Covering’, self.iface.mainWindow())

i due punti (:slight_smile: all’inizio del percorso indicano che è una risorsa, non un semplice
percorso ad un file.

Puoi eliminare i due punti ed inserire il percorso completo come ha già scritto Luca,
oppure creare un file di risorse resources.qrc ed aggiungerci le icone che vuoi caricare.

Ti basterà copiare il file resources.qrc da un’altro plugin e modificarlo con QtCreator
che offre un’interfaccia grafica per la modifica di tali file.

Una volta creato il file .qrc generi il relativo file .py delle risorse in questo modo
pyrcc4 -o resources_rc.py resources.qrc

quindi ti basterà includere nel tuo codice python l’istruzione
import resources_rc
che caricherà il modulo con le risorse.

Ti chiederai perché complicarsi la vita in questo modo:
creare il file di risorse, compilarlo, importarlo nel codice.

  1. Immagina di avere un’icona che usi nei posti più disparati.
    Se avessi il percorso all’icona hardcoded nel codice e vorresti cambiarla dovresti
    modificare tutti i file che contengono il percorso all’icona.
    Avendo un file di risorse ti basterà cambiare quello senza dover modificare il codice
    del tuo programma.

  2. Altro caso, immagina di avere più file di risorse con temi di icone differenti.
    Potresti passare da uno all’altro semplicemente modificando l’istruzione
    import resources_rc
    che carica il tuo file di risorse nel progetto, senza dover modificare tutti i percorsi
    che hai nel tuo codice.

Capisco che inserire il path nel codice è più semplice, ma una volta che hai preso
la mano con i file di risorse vedrai che in fin dei conti non sono così complicati da
utilizzare.

Grazie in anticipo


Michela

Saluti.


Giuseppe Sucameli