[Qgis-developer] quick noob python question

Duarte Carreira DCarreira at edia.pt
Fri Dec 16 06:35:04 EST 2011


Hi Germán.

Your tips are exactly what I was looking for!

So I can now open a dialog:

iface=qgis.utils.iface
menu=iface.layerMenu()
myActions=menu.actions()
myAction=[ac for ac in myActions if ac.objectName()=="mActionEmbedLayers"][0]
myAction.trigger()

So now for the final 1 million dollar question: can I change the first textbox in the dialog?

Thanks,
Duarte

De: Germán Carrillo [mailto:carrillo.german at gmail.com]
Enviada: quinta-feira, 15 de Dezembro de 2011 13:26
Para: Duarte Carreira; qgis-developer at lists.osgeo.org
Assunto: Re: [Qgis-developer] quick noob python question

Hi Duarte,

if I understood well, you would like to simulate a click in QGIS buttons. For this you can use the slot trigger() of the available QAction's in the class QgisInteface [1]. For example, if you want to open the "Open Project..." dialog you can type this in the Python Console (inside QGIS):

iface=qgis.utils.iface

iface.actionOpenProject().trigger()

Regarding Toolbars, you can also access them from the QgisInterface class. For example, to access the Layer menu do this:

iface=qgis.utils.iface

m=iface.layerMenu()



Since a menu consists of a set of actions you could trigger any action of the menu:



iface=qgis.utils.iface

for a in m.actions():

print a.text()

m.actions()[2].trigger()

Hope this helps.

Regards,

Germán

-------------------------
[1] http://www.qgis.org/api/classQgisInterface.html
2011/12/15 Duarte Carreira <DCarreira at edia.pt<mailto:DCarreira at edia.pt>>
Just an additional question: generally speaking the gui is not accessible from python? We cannot simulate a toolbar button click, or menu item?

Duarte

De: Duarte Carreira [mailto:DCarreira at edia.pt<mailto:DCarreira at edia.pt>]
Enviada: quarta-feira, 14 de Dezembro de 2011 17:05
Para: Germán Carrillo; qgis-developer at lists.osgeo.org<mailto:qgis-developer at lists.osgeo.org>
Assunto: RE: [Qgis-developer] quick noob python question

Germán, thanks.

Maybe that's what I'll do, but it pains me to duplicate code...

Duarte

De: Germán Carrillo [mailto:carrillo.german at gmail.com<mailto:carrillo.german at gmail.com>]
Enviada: quarta-feira, 14 de Dezembro de 2011 12:30
Para: qgis-developer at lists.osgeo.org<mailto:qgis-developer at lists.osgeo.org>; Duarte Carreira
Assunto: Re: [Qgis-developer] quick noob python question

Hi Duarte,

from my experience it is not possible. You can of course re-use the ui file and implement the whole functionality on your own based on the cpp file, basically a translation from C++ to Python. I've done this before and it is not a complex process, but it requires time.

By the way, the folder app of QGIS source code contains QGIS-application-specific code, so I would say you won't find there functionality available in PyQGIS, for that you would have to have a look to the gui and core folders.

Perhaps there are other ways to set the project file programmatically from Python, but I don't know them, sorry.

Regards,

Germán
2011/12/14 Duarte Carreira <DCarreira at edia.pt<mailto:DCarreira at edia.pt>>
Using python is it possible to call QgsEmbedLayerDialog and set the project file programmatically (mProjectFileLineEdit)?

https://github.com/qgis/Quantum-GIS/blob/release-1_8/src/app/qgsembedlayerdialog.cpp
https://github.com/qgis/Quantum-GIS/blob/release-1_8/src/ui/qgsembedlayerdialogbase.ui

Thanks,
Duarte Carreira


_______________________________________________
Qgis-developer mailing list
Qgis-developer at lists.osgeo.org<mailto:Qgis-developer at lists.osgeo.org>
http://lists.osgeo.org/mailman/listinfo/qgis-developer
--
-----------
  |\__
(:>__)(
  |/

Soluciones Geoinformáticas Libres
http://geotux.tuxfamily.org/



--
-----------
  |\__
(:>__)(
  |/

Soluciones Geoinformáticas Libres
http://geotux.tuxfamily.org/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/qgis-developer/attachments/20111216/4739811e/attachment-0001.html


More information about the Qgis-developer mailing list