Suite

Les instructions d'impression de la console Qgis Python ne fonctionnent pas

Les instructions d'impression de la console Qgis Python ne fonctionnent pas


J'ai un petit problème avec la console Python dans Qgis. Je travaille sur des tutoriels d'introduction sur les scripts Python pour Qgis. J'ai un script qui charge les calques, puis interroge le canevas pour les noms et parcourt les noms et les imprime, quelque chose comme ceci :

print "Cette instruction d'impression n'aide pas" # # importer des calques dans le canevas qgis.utils.iface.addVectorLayer("/path/file1.shp", "First file", "ogr") qgis.utils.iface.addVectorLayer(" /chemin/fichier2.shp", "Deuxième fichier", "ogr") qgis.utils.iface.addRasterLayer("/chemin/fichier3.tif", "Troisième fichier") # # print "Cette ligne déclenche la fonction d'impression dans la boucle for pour fonctionner" # canvas = qgis.utils.iface.mapCanvas() allLayers = canvas.layers() # for i in allLayers: print i.name()

Le problème est que, à moins que j'imprime sur la console avant la boucle for mais après les importations, les noms de couche ne sont pas imprimés, le script existe simplement proprement. Si j'exécute le script une deuxième fois (avec les fichiers toujours dans le canevas), les fichiers sont à nouveau importés et la boucle for fonctionne, mais bien sûr, il y a maintenant deux copies des fichiers dans le canevas. Est-ce encore un autre problème de chemin ou un bug ou est-ce que j'attends trop ?

(OSX 10.7.5 et Qgis 2.6.0)


La meilleure façon d'imprimer la connexion à qgis est d'utiliser leQgsMessageLogclasser. Cela écrit dans la fenêtre du journal de débogage plutôt que dans la console.

QgsMessageLog.logMessage("message", "nom")

En bas à droite de la fenêtre principale, vous verrez une icône sur laquelle vous pouvez appuyer pour ouvrir le journal de débogage.