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 input () , print () , repr () et str () sont disponibles depuis le shell Python.
L'affichage de la sortie d'un module nécessite la console interactive Python. Des fonctionnalités telles queL'extensionAlternative Python Script Organizer (APSO) propose la fonction de sortie msgbox() dans son module apso_utils .
% PRODUCTNAME 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% PRODUCTNAME, 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é 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
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