Python: Wejście i wyjście ekranu

Spis treści
Indeks 🔎︎

# Input/Output to Screen

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.

The Alternative Python Script Organizer (APSO) extension offers a msgbox() function out of its apso_utils module.

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:

- Copy screen_io Python module in My macros within /Scripts/python/pythonpath,

- Copy uiScripts Basic module in My macros Standard Basic library,

- Uruchom ponownie LibreOffice.

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

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

Tematy pokrewne

Screen I/O Functions

Python programming examples

Pomoc skryptów Pythona LibreOffice

Calling Basic Macros from Python