se eu tentar carregar o plug-in openlayers em um aplicativo independente, ele sempre falhará com False, embora os caminhos estejam definidos e o plug-in seja exibido.
(testado no Ubuntu 14.04, QGIS 2.4, python-2.7)
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys, os
import qgis
import qgis.gui, qgis.utils
from qgis.core import *
from PyQt4 import QtGui
# open an app
app = QtGui.QApplication(sys.argv)
# supply path to where is your qgis installed
QgsApplication.setPrefixPath(u'/usr', True)
# load providers
QgsApplication.initQgis()
# set up the plugins
qgis.utils.plugin_paths = \
['/usr/share/qgis/python/plugins',
os.path.expanduser('~/.qgis2/python/plugins'),]
qgis.utils.updateAvailablePlugins()
print qgis.utils.available_plugins
print "...load:", qgis.utils.loadPlugin(u'openlayers_plugin')
print "...start:", qgis.utils.startPlugin(u'openlayers_plugin')
print "active:\n",qgis.utils.active_plugins
canvas = qgis.gui.QgsMapCanvas()
canvas.show()
Qual é o problema aqui ? post Como buscar camadas de openlayers no pyqgis? refere-se ao console python incorporado, onde o plug-in estava magicamente disponível antes.
obrigado!
Respostas:
Isso nunca, bem, talvez com alguns hacks, funcione bem. Os plug-ins normalmente usam o
QgisInterface
objeto que dá acesso à interface e aos métodos do QGIS. Você não possui esse objeto no seu script independente. A maioria dos plugins, se não todos, não é projetada para executar fora do QGIS dessa maneira.fonte
DummyQgisInterface
deve ser possível ...Sendo muito entusiasmado com o paradigma TDD, passei algum tempo montando uma interface fictícia (baseada em alguns fragmentos de código que encontrei na internet) que permite chamar os plug-ins QGIS e QGIS de forma independente.
A interface que criei é a seguinte e usei-a para todos os meus testes de unidade desde:
Se você deseja testar / usar o QGIS mais a interação com um plug-in instalado agora, faça o seguinte (em seu conjunto mais compacto, por exemplo):
Para mais exemplos de uso e exemplos da vida real em aplicativos QGIS de teste de unidade, você pode conferir nossa página do github ( https://github.com/UdK-VPT/Open_eQuarter/tree/master/mole ). Os testes de pasta contêm todos os testes de unidade (que estão testando principalmente os módulos no pacote qgisinteraction, que contém um módulo, que interage com o plug-in point_sampling_tool).
fonte
utils.iface = iface
duas linhas mais cedo e teve de zombar de um QgsMessageBar na iface ...