Contenido
Índice 🔎︎

# Abrir un cuadro de diálogo con Python

Los cuadros de diálogo estáticos de LibreOffice se crean mediante el editor de diálogos y se almacenan en varios lugares en función de su naturaleza personal (Mis macros), compartida (Macros de LibreOffice) o incrustada (en un documento). En cambio, los cuadros de diálogo dinámicos se construyen en el momento de la ejecución, a partir de macros escritas en Basic, Python o cualquier otro lenguaje admitido por LibreOffice. Descríbese a continuación la apertura de cuadros de diálogo estáticos mediante Python. Por motivos de claridad, se omitirán el manejo de excepciones y la internacionalización.

## Cuadros de diálogo Mis macros y Macros de LibreOffice

Los ejemplos siguientes abre la consola Access2Base Trace o el cuadro de diálogo importado TutorialsDialog a través del menú Herramientas ▸ Macros ▸ Ejecutar macro:

            # -*- coding: utf-8 -*-
            from __future__ import unicode_literals

            def consoleDlg():
                ctx =XSCRIPTCONTEXT.getComponentContext()
                smgr = ctx.getServiceManager()
                dp = smgr.createInstanceWithContext("com.sun.star.awt.DialogProvider", ctx)
                dlg = dp.createDialog( "vnd.sun.star.script:Access2Base.dlgTrace?location=application")
                dlg.execute()
                dlg.dispose()

            def tutorDialog():
                ctx =XSCRIPTCONTEXT.getComponentContext()
                smgr = ctx.getServiceManager()
                dp = smgr.createInstanceWithContext("com.sun.star.awt.DialogProvider", ctx)
                dlg = dp.createDialog("vnd.sun.star.script:Standard.TutorialsDialog?location=application")
                dlg.execute()
                dlg.dispose()

            g_exportedScripts = (consoleDlg, tutorDialog)

## Cuadros de diálogo incrustados en documentos

The example below opens a newly edited Dialog1 dialog from a document with Tools - Macros - Run Macro menu:

            # -*- coding: utf-8 -*-
            from __future__ import unicode_literals

            def docDialog():
                """ Mostrar un diálogo alojado en un documento """
                model = XSCRIPTCONTEXT.getDocument()
                smgr = XSCRIPTCONTEXT.getComponentContext().ServiceManager
                dp = smgr.createInstanceWithArguments( "com.sun.star.awt.DialogProvider", (model,))
                dlg = dp.createDialog( "vnd.sun.star.script:Standard.Dialog1?location=document")
                dlg.execute()
                dlg.dispose()

            g_exportedScripts = (docDialog,)

Diríjase a msgbox.py en el directorio {installation/program/ para ver ejemplos de cuadros de diálogo dinámicos en Python.

Temas relacionados

Abrir un cuadro de diálogo con Basic

Ejemplos de programación en Python

Ayuda con las macros en Python en LibreOffice