Wejście i wyjście ekranu

Standardowy plik wyjściowy Pythona nie jest dostępny podczas uruchamiania makr Pythona z menu Narzędzia - Makra - Wykonaj makro…. Prezentacja wyjścia modułu wymaga interaktywnej konsoli Pythona. Funkcje takie jak input(), print(), repr() i str() są dostępne w powłoce Pythona.

tip

Moduł LibreOffice msgbox Pythona proponuje metodę msgbox(), która jest zilustrowana na stronach z przykładami Tworzenie detektorów zdarzeń i Tworzenie obsługi okna dialogowego.


LibreOffice Basic proponuje ekranowe funkcje I/O InputBox(), Msgbox() i Print(). Istnieją alternatywy dla języka Python, które opierają się albo na zestawie narzędzi abstrakcyjnych okien interfejsu API LibreOffice, albo na wywołaniach funkcji języka Python do Basic. Ten ostatni proponuje składnię, która jest celowo zbliżona do składni Basic i używa modułu Pythona obok modułu Basic. API Scripting Framework służy do wykonywania wywołań funkcji w językach Basic, BeanShell, JavaScript i Python.

Składnia Pythona:

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

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

Print(txt)

Przykłady:

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

Instalacja:

Moduł Pythona screen_io


        # -*- coding: utf-8 -*-
        from __future__ import unicode_literals
        
        def MsgBox(prompt: str, buttons=0, title='LibreOffice') -> int:
            """ Wyświetla okno dialogowe zawierające komunikat i zwraca wartość."""
            xScript = _getScript("_MsgBox")
            res = xScript.invoke((prompt,buttons,title), (), ())
            return res[0]
        
        def InputBox(prompt: str, title='LibreOffice', defaultValue='') -> str:
            """ Wyświetla monit w oknie dialogowym, w którym użytkownik może wprowadzić tekst."""
            xScript = _getScript("_InputBox")
            res = xScript.invoke((prompt,title,defaultValue), (), ())
            return res[0]
        
        def Print(message: str):
            """Wypisuje określony ciąg znaków lub wyrażenie liczbowe w oknie dialogowym."""
            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

Metody MsgBox i InputBox z usługi Basic zawartej w bibliotece ScriptForge wywołują bezpośrednio ich natywne odpowiedniki w Basic.


Moduł Basic uiScripts


        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

Rozszerzenie Alternative Python Script Organizer (APSO) udostępnia funkcję msgbox() z jego modułu apso_utils.


Prosimy o wsparcie!