Python : Programavimas „Python“ kalba

Turinys
Rodyklė 🔎︎

# Programavimas naudojant „Python“ skriptus

„Python“ makrokomanda yra funkcija .py faile, identifikuojama kaip modulis. Skirtingai nuo „LibreOffice Basic“ ir jo keliolikos UNO objektų funkcijų ar paslaugų , „Python“ makrokomandose naudojamas XSCRIPTCONTEXT UNO vienas objektas, bendrinamas su „JavaScript“ ir „BeanShell“. g_exportedScript globaliame rinkinyje išreikštai nurodomos pasirenkamos makrokomandos iš modulio. „Python“ moduliai turi autonominę kodų logiką ir yra nepriklausomi vienas nuo kito.

## XSCRIPTCONTEXT globalus kintamasis

Iš to globalaus kintamojo XSCRIPTCONTEXT galima spręsti apie tikras pagrindines UNO galimybes. Atsižvelkite į „LibreOffice“ API norėdami gauti išsamų XSCRIPTCONTEXT aprašą. XSCRIPTCONTEXT metodo santrauka:

Metodai | Aprašas | Susieta su „Basic“ kaip
--- | --- | ---
getDocument() | Dokumento nuoroda, pagal kurią skriptas gali veikti. | ThisComponent
getDesktop() | Darbalaukio nuoroda, pagal kurią skriptas gali veikti. | StarDesktop
getComponentContext() | Komponento kontekstas, kurį skriptas gali naudoti kurdamas kitus „uno“ komponentus. | GetDefaultContext

Sveikas, pasauli ir Didžiosios raidės diegimo bendri skriptai iliustruoja su UNO susijusių makrokomandų globalaus kintamojo XSCRIPTCONTEXT naudojimą.

„Python“ standartinio išvedimo failo naudoti negalima, kai vykdote „Python“ makrokomandas iš meniu Įrankiai → Makrokomandos → Vykdyti makrokomandą. Norėdami gauti daugiau informacijos, žr. Įvestis ir išvestis į ekraną.

## Modulio importas

XSCRIPTCONTEXT nėra pateiktas importuojantiems moduliams.

„LibreOffice Basic“ bibliotekose yra klasės, paprogramės ir kintamieji, „Python“ moduliuose yra klasės, funkcijos ir kintamieji. Įprastos daugkartinio naudojimo „Python“ ar UNO funkcijų savybės turi būti laikomos naudojant Mano makrokomandos (vartotojo profilis)/Scripts/python/pythonpath. „Python“ bibliotekos padeda organizuoti modulius, kad būtų išvengta modulių pavadinimų persidengimo. Importuokite uno.py į bendrinamus modulius.

Naudojant modulį uno.py galima spręsti apie BASIC UNO galimybes. Naudokite „Python“ interaktyvų apvalką kad gautumėte išsamų modulio aprašą pasitelkus dir() ir help() „Python“ komandas.

Funkcijos | Aprašas | Susieta su „Basic“ kaip
--- | --- | ---
absolutize() | Grąžina absoliutų failo URL iš nurodytų URL. |
createUnoStruct() | Sukuria UNO struktūrą arba išimtį naudojant „typeName“. | CreateUNOStruct()
fileUrlToSystemPath() | Grąžina sistemos kelią. | ConvertFromURL()
getClass() | Grąžina konkrečios UNO išimties, struktūros ar sąsajos klasę. |
getComponentContext() | Pateikia UNO komponento kontekstą, naudojamą inicializuoti „Python“ vykdymui. | GetDefaultContext()
Enum() getConstantByName() | Ieško IDL konstantos reikšmės, pateikdamas jos vardą išreikštu pavidalu. | Žr. API konstantų grupes
isInterface() | Grąžina „True“, kai objektas yra UNO sąsajos klasė. |
systemPathToFileUrl() | Grąžina nurodyto sistemos kelio failo URL. | ConvertToURL()

LibreLogo ir TableSample diegimo bendri skriptai naudoja uno.py modulį.

## Daugiau „Python-Basic“ pavyzdžių

„Python“ UNO | „Basic“ UNO savybės
--- | ---
ctx = uno.getComponentContext() smgr = ctx.getServiceManager() obj = smgr.createInstanceWithContext( .. , ctx) | CreateUnoService()
Žr. Dialogo atvėrimas | CreateUnoDialog()
Žr. Agentų kūrimas | CreateUnoListener()
Žr. UNO duomenų tipus | CreateUnoValue() CreateObject()
| EqualUnoObjects()
ctx = uno.getComponentContext() smgr = ctx.getServiceManager() | GetProcessServiceManager()
def hasUnoInterfaces(obj, *interfaces): return set(interfaces).issubset(t.typeName for t in obj.Types) | HasUnoInterfaces()
| IsUnoStruct()
ctx = uno.getComponentContext() smgr = ctx.getServiceManager() DESK = 'com.sun.star.frame.Desktop' desktop = smgr.createInstanceWithContext(DESK , ctx) | StarDesktop
desktop = smgr.createInstanceWithContext(DESK , ctx) doc = desktop.CurrentComponent | ThisComponent

## Įterpto modulio importavimas

Panašiai kaip „% PRODUCTNAME Basic“, palaikančiame naršymą ir dinamišką bibliotekų įkėlimą, „Python“ bibliotekas galima tyrinėti ir importuoti pagal pareikalavimą. Norėdami gauti daugiau informacijos apie bibliotekos konteinerius, aplankykite „% PRODUCTNAME“ taikomųjų programų sąsają (API) arba atsisiųskite „% PRODUCTNAME“ programinės įrangos kūrimo rinkinį (SDK).

„Python“ dokumento įdėto modulio importavimas parodytas toliau, išimčių tvarkymas nėra detalus:

                import uno, sys

                def load_library(library_name: str, module_name=None):
                    """ įkelti biblioteką ir importo modulį

                    'Bibliothèque de fonctions' adaptavo Hubert Lambert
                    Prieiga https://forum.openoffice.org/fr/forum/viewtopic.php?p=286213"""
                    doc = XSCRIPTCONTEXT.getDocument()  # dabartinis dokumentas
                    url = uno.fileUrlToSystemPath( \
                        '{}/{}'.format(doc.URL, 'Scripts/python'+library_name))  # ConvertToURL()
                    if not url in sys.path:  # pridėti kelią, jei būtina
                        sys.path.insert(0, url)  # doclib turi viršenybę
                    if module_name:  # import jei prašoma
                        return zipimport.zipimporter(url).load_module(module_name)

                def import_embedded_python():
                    ui = load_library("my_gui",'screen_io')  # add  kelias + import
                    ui.MsgBox(sys.modules.keys())

                g_exportedScripts = (import_embedded_python,)  # Public macros

Susijusios temos

„Basic“ UNO objektai, funkcijos ir paslaugos

Importuojant „Python“ modulius

Įvedimas ir išvedimas į ekraną

LibreOffice Python skriptai žinynas