Collabora Office 24.04 Help
Het standaard uitvoerbestand van Python is niet beschikbaar wanneer Python-macro's worden uitgevoerd via het menu input(), print(), repr() en str() zijn dan beschikbaar in de Python-shell.
. Voor het tonen van de uitvoer is het Python interactieve console nodig. Functies alsCollabora Office msgbox Python-module stelt een msgbox() methode in die wordt geïllustreerd in de voorbeeldpagina's Event Listeners aanmaken en Een dialog handler aanmaken.
Collabora Office Basic stelt de InputBox(), Msgbox() en Print() als scherm I/O functies voor. Python vertrouwt als alternatief op Collabora Office API Abstract Windowing Toolkit of op Python to Basic functie-aanroepen. Bij het laatste wordt een syntaxis voorgesteld die dicht bij die van BASIC blijft, en gebruikt een Python-module naast een BASIC-module. Het API Scripting Framework wordt gebruikt om functie-aanroepen tussen de verschillende talen BASIC, BeanShell, JavaScript en Python, te doen.
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)
Kopieer de Python-module screen_io in Mijn macro's naar <UserProfile>/Scripts/python/pythonpath,
Kopieer de BASIC-module uiScripts in Mijn macro's Standaard BASIC-bibliotheek,
Collabora Office herstarten:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
def MsgBox(prompt: str, buttons=0, title='LibreOffice') -> int:
""" Toont een dialoogvenster met een bericht en retourneert een waarde."""
xScript = _getScript("_MsgBox")
res = xScript.invoke((prompt,buttons,title), (), ())
return res[0]
def InputBox(prompt: str, title='LibreOffice', defaultValue='') -> str:
""" Geeft een prompt weer in een dialoogvenster waarin de gebruiker tekst kan invoeren."""
xScript = _getScript("_InputBox")
res = xScript.invoke((prompt,title,defaultValue), (), ())
return res[0]
def Print(message: str):
'''Schrijft de gespecificeerde tekenreeksen of numerieke uitdrukkingen weg naar een dialoogvenster.'''
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
MsgBox en InputBox methoden van de Basic service opgenomen in de ScriptForge-bibliotheken roepen rechtstreeks hun oorspronkelijke Basic-tegenhangers aan.
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
De Alternative Python Script Organizer (APSO)-extensie biedt een msgbox()-functie uit zijn apso_utils-module.