Contenu

# Entrées/Sorties écran

Le fichier de sortie standard Python n'est pas disponible lors de l'exécution des macros Python depuis le menu Outils - Macros - Exécuter la macro... L'affichage de la sortie d'un module nécessite la console interactive Python. Des fonctionnalités telles que input () , print () , repr () et str () sont disponibles depuis le shell Python.

Le module LibreOffice msgbox Python propose une méthode msgbox() illustrée dans les pages d'exemple Création d'écouteurs d'événements et Création d'un gestionnaire de dialogue.

LibreOffice Basic propose des fonctions d'E/S d'écran InputBox(), Msgbox() et Print(). Il existe des alternatives Python reposant soit sur la boîte à outils de fenêtrage (Abstract Windowing Toolkit ou awt) de l'API LibreOffice, soit sur des appels de fonction Python à Basic. Ce dernier propose une syntaxe volontairement proche de celle de Basic, et utilise un module Python à côté d'un module Basic. L'API Scripting Framework est utilisée pour effectuer des appels de fonction inter-langages Basic, BeanShell, JavaScript et Python.

## Syntaxe Python :

MsgBox(txt, buttons=0, title=None)

InputBox(txt, title=None, default=None)

Print(txt)

## Exemples :

>>> import screen_io as ui

>>> reply = ui.InputBox('Please enter a phrase', title='Dear user', defaultValue="here..")

>>> rc = ui.MsgBox(reply, title="Confirmation of phrase")

>>> age = ui.InputBox('How old are you?', title="Hi")

>>> ui.Print(age)

## installation

- Copiez le module Python screen_io dans Mes macros dans <UserProfile>/Scripts/python/pythonpath,

- Copiez le module Basic uiScripts dans la bibliothèque standard BasicMes macros,

- Redémarrer LibreOffice.

### screen_io module Python

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

            def MsgBox(prompt: str, buttons=0, title='LibreOffice') -> int:
                """ Affiche une boîte de dialogue contenant un message et renvoie une valeur."""
                xScript = _getScript("_MsgBox")
                res = xScript.invoke((prompt,buttons,title), (), ())
                return res[0]

            def InputBox(prompt: str, title='LibreOffice', defaultValue='') -> str:
                """ Affiche une invite dans une boîte de dialogue dans laquelle l'utilisateur peut saisir du texte."""
                xScript = _getScript("_InputBox")
                res = xScript.invoke((prompt,title,defaultValue), (), ())
                return res[0]

            def Print(message: str):
                """Génère les chaînes ou expressions numériques spécifiées dans une boîte de dialogue."""
                xScript = _getScript("_Print")
                xScript.invoke((message,), (), ())

            import uno
            from com.sun.star.script.provider import XScript
            def _getScript(script: str, library='Standard', module='uiScripts') -> XScript:
                sm = uno.getComponentContext().ServiceManager
                mspf = sm.createInstanceWithContext("com.sun.star.script.provider.MasterScriptProviderFactory", uno.getComponentContext())
                scriptPro = mspf.createScriptProvider("")
                scriptName = "vnd.sun.star.script:"+library+"."+module+"."+script+"?language=Basic&location=application"
                xScript = scriptPro.getScript(scriptName)
                return xScript

Les méthodes MsgBox et InputBox du service de Basic inclus dans les bibliothèques ScriptForge appellent directement leurs homologues Basic natifs.

### uiScripts module Basic

            Option Explicit
            Private Function _MsgBox( prompt As String, Optional buttons As Integer, _
                    Optional title As String ) As Integer
                _MsgBox = MsgBox( prompt, buttons, title )
            End Function
            Private Function _InputBox( prompt As String, Optional title As String, _
                    Optional default As String) As String
                _InputBox = InputBox( prompt, title, default )
            End Function
            Private Sub _Print( msg As String )
                Print msg
            End Sub

L'extension Alternative Python Script Organizer (APSO) offre une fonction msgbox() de son module apso_utils.

Rubriques connexes

Fonctions d'entrée/sortie à l'écran

Exemples de programmation Python

Aide des scripts LibreOffice Python

Appel de Basic depuis Python