Invoer/uitvoer naar scherm

Het standaard uitvoerbestand van Python is niet beschikbaar wanneer Python-macro's worden uitgevoerd via het menu Extra – Macro's - Macro uitvoeren. Voor het tonen van de uitvoer is het Python interactieve console nodig. Functies als input(), print(), repr() en str() zijn dan beschikbaar in de Python-shell.

tip

Collabora 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.

Python syntaxis:

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

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

Print(txt)

Voorbeelden:

>>> 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)

Installatie:

screen_io Python-module


        # -*- 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
    
note

MsgBox en InputBox methoden van de Basic service opgenomen in de ScriptForge-bibliotheken roepen rechtstreeks hun oorspronkelijke Basic-tegenhangers aan.


uiScripts BASIC-module


        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

De Alternative Python Script Organizer (APSO)-extensie biedt een msgbox()-functie uit zijn apso_utils-module.


Help ons, alstublieft!