Turinys
Rodyklė 🔎︎

# Įvedimas ir išvedimas į ekraną

„Python“ standartinio išvesties failo naudoti negalima, kai vykdote „Python“ makrokomandas iš Priemonės → Makrokomandos → Vykdyti makrokomandą… meniu. Norint pateikti modulio išvestį, reikia interaktyvios „Python“ konsolės. Šios savybės: input(), print(), repr() ir str() randamos iš „Python“ apvalkalo.

Alternatyvus „Python“ skriptų organizatorius (APSO) siūlo msgbox() funkciją iš savo modulių apso_utils.

„% PRODUCTNAME Basic“ siūlo ekrano įvesties ir išvesties funkcijas InputBox(), Msgbox() ir Print(). „Python“ alternatyvos egzistuoja remiantis „% PRODUCTNAME API Abstract Windowing Toolkit“ arba „Python to Basic“ funkcijų iškvietimais. Pastarasis siūlo sintaksę, kuri yra tikslingai artima „Basic“, ir naudoja „Python“ modulį greta „Basic“ modulio. „API Scripting Framework“ naudojama atliekant „Basic“, „BeanShell“, „JavaScript“ ir „Python“ tarpkalbių funkcijų iškvietimus.

## „Python“ sintaksė:

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

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

Print(txt)

## Pavyzdžiai:

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

## Diegimas:

- Kopijuokite screen_io „Python“ modulį į Mano makrokomandos naudodami /Scripts/python/pythonpath,

- Kopijuokite uiScripts „Basic“ modulį į Mano makrokomandos standartinę „Basic“ biblioteką,

- Paleisti „LibreOffice“ iš naujo

### screen_io „Python“ modulis

            # -*- coding: utf-8 -*-
            from __future__ import unicode_literals

            def MsgBox(prompt: str, buttons=0, title='LibreOffice') -> int:
                """ Parodo dialogo langą su pranešimu ir grąžina reikšmę."""
                xScript = _getScript("_MsgBox")
                res = xScript.invoke((prompt,buttons,title), (), ())
                return res[0]

            def InputBox(prompt: str, title='LibreOffice', defaultValue='') -> str:
                """ Dialogo lange rodomas raginimas, kuriame vartotojas gali įvesti tekstą."""
                xScript = _getScript("_InputBox")
                res = xScript.invoke((prompt,title,defaultValue), (), ())
                return res[0]

            def Print(message: str):
                """Nurodytų eilučių arba skaitmeninių reiškinių rezultatai dialogo lange."""
                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 „Basic“ modulis

            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

Susijusios temos

Ekrano Į/I funkcijos

Python programavimo pavyzdžiai

LibreOffice Python skriptai žinynas

Kreipiamasi į Basic kalbos makrokomandas iš Python kalbos