10

I have a QGIS plugin that performs a long-running operation, eventually producing and loading new shapefiles into QGIS. (I have this as a plugin rather than just a function that can be called from the console because the console doesn't work very well for long-running operations.)

Internally, the plugin creates a complex Python data structure. I would like a user to be able to access this data structure from the QGIS Python Console.

I know that this could be done by serializing the data structure to a file and then loading it from a file (slightly more difficult in this case because the data structure cannot be pickled) but I am wondering if there is some sort of global variable inside QGIS to which I can assign my data structure from the plugin so that it can be directly used from the Python Console.

Taras
  • 32,823
  • 4
  • 66
  • 137
ajd
  • 265
  • 1
  • 6

1 Answers1

12

You are able to access any plugin data by using the qgis.utils.plugins

from qgis import utils

mypluginInstance = utils.plugins['myplugin'] print(mypluginInstance.myData)

Taras
  • 32,823
  • 4
  • 66
  • 137
Matthias Kuhn
  • 27,780
  • 3
  • 88
  • 129
  • 2
    Thanks for this. You can use the same lines to create a reference and access functions from a plugin too. Without this answer I may never have known how. ie mypluginInstance.mypluginfunction() – Mr Purple Apr 25 '14 at 11:50