Aide Collabora Office 24.04
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 queLe module Collabora Office 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.
Collabora Office 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 Collabora Office, 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.
MsgBox(txt, buttons=0, title=None)
InputBox(txt, title=None, default=None)
Print(txt)
>>> 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)
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 Collabora Office.
# -*- 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.
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.