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.

tip

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

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
    
note

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
    
tip

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


Aidez-nous !