He creado un problema en el rastreador de bichos, porque es muy extraño.
Gran trabajo en tu código, pero para arreglar los valores de ocultamiento al hacer clic en la etiqueta sólo hay que cambiar algunas cosas. El método mapRenderer = iface.mapCanvas().mapRenderer()
está desaconsejado, necesitas un cambio para mapRenderer = iface.mapCanvas().mapSettings()
. Otro cambio es que necesitas llamar a view.setComposition(c)
antes de añadir una etiqueta.
el código completo.
from qgis.core import *
from qgis.utils import iface
from PyQt4.QtCore import *
from PyQt4.QtGui import *
# make a composition
mapRenderer = iface.mapCanvas().mapSettings()
c = QgsComposition(mapRenderer)
c.setPlotStyle(QgsComposition.Print)
view = iface.createNewComposer()
# view composer
view.setComposition(c)
#Fix error
view.setCurrentTool( view.AddLabel )
view.setCurrentTool( view.Select )
# add label
lbl = QgsComposerLabel(c)
lbl.setText("test text")
lbl.setItemPosition(10,10)
lbl.adjustSizeToText()
c.addComposerLabel(lbl)
# find items and items prop widget
win = view.composerWindow()
items_widget = win.findChildren(QDockWidget, 'ItemsDock')[0]
#items_prop_widget = win.findChildren(QWidget, 'ItemDock')[0]
# set items model
items_list_widget = items_widget.findChildren(QTreeView,'')[0]
items_model = c.itemsModel()
items_list_widget.setModel(items_model)
Actualiza el código: Resuelto el problema de la señal.
He borrado algunas líneas innecesarias y he añadido la señal de conexión.
QObject.connect( items_list_widget.selectionModel(), SIGNAL("currentChanged( QModelIndex, QModelIndex)"), c.itemsModel(),SLOT("setSelected( QModelIndex )"))
Código completo
from qgis.core import *
from qgis.utils import iface
from PyQt4.QtCore import *
from PyQt4.QtGui import *
# make a composition
mapRenderer = iface.mapCanvas().mapSettings()
c = QgsComposition(mapRenderer)
c.setPlotStyle(QgsComposition.Print)
view = iface.createNewComposer()
# view composer
view.setComposition(c)
#Add Map
rect = QgsRectangle(mapRenderer.fullExtent())
composer_map = QgsComposerMap(c, 0, 0, c.paperWidth(), c.paperHeight())
composer_map.setNewExtent(rect)
composer_map.updateItem()
c.addComposerMap(composer_map)
# add label
lbl = QgsComposerLabel(c)
lbl.setText("test text")
lbl.setItemPosition(10,10)
lbl.adjustSizeToText()
c.addComposerLabel(lbl)
# add label
lbl = QgsComposerLabel(c)
lbl.setText("other text")
lbl.setItemPosition(50,10)
lbl.adjustSizeToText()
c.addComposerLabel(lbl)
# find items and items prop widget
win = view.composerWindow()
items_widget = win.findChildren(QDockWidget, 'ItemsDock')[0]
items_widget_prop = win.findChildren(QDockWidget, 'ItemDock')[0]
items_widget_prop.show()
# set items model
items_list_widget = items_widget.findChildren(QTreeView,'')[0]
items_model = c.itemsModel()
items_list_widget.setModel(items_model)
QObject.connect( items_list_widget.selectionModel(), SIGNAL("currentChanged( QModelIndex, QModelIndex)"), c.itemsModel(),SLOT("setSelected( QModelIndex )"))
Resultado.