Programmering med Python-skript

En Python-makro er en funksjon i en .py-fil, identifisert som en modul. I motsetning til Collabora Office Basic og dets dusin av UNO objekter funksjoner eller tjenester , Python makroer bruker XSCRIPTCONTEXT UNO enkelt objekt, delt med JavaScript og BeanShell. g_exportedScripts global tuple viser eksplisitt valgbare makroer fra en modul. Python-moduler har autonom kodelogikk, og er uavhengige av hverandre.

XSCRIPTCONTEXT Global Variabel

Ekte Basic UNO-fasiliteter kan utledes fra XSCRIPTCONTEXT global variabel. Referer til Collabora Office API for a komplett beskrivelse av XSCRIPTCONTEXT. XSCRIPTCONTEXT metoder sammenfattet som:

Metoder

Beskrivelse

Mappet i Basic som

getDocument()

Dokumentreferansen som skriptet kan operere på.

ThisComponent

getDesktop()

Dokumentreferansen som skriptet kan operere på.

StarDesktop

getComponentContext()

Komponentkonteksten som skriptet kan bruke til å lage andre UNO-komponenter.

GetDefaultContext


HelloWorld ogUtnytt installerte delte skript illustrerer UNO-relaterte makroer som bruker XSCRIPTCONTEXT globale variabler.

tip

Python standard utdatafil er ikke tilgjengelig når du kjører Python-makroer fra Verktøy-menyen - Makroer - Kjør Makro-menyelementer. Se Input/Output to Screen for mer informasjon.


Modul-import

warning

XSCRIPTCONTEXT er ikke tilgjengelig for importerte moduler.


Collabora Office Grunnleggende biblioteker inneholder klasser, rutiner og variabler, Python-moduler inneholder klasser, funksjoner og variabler. Vanlige deler av gjenbrukbare Python- eller UNO-funksjoner må lagres iMine makroer i (Brukerprofil)/Scripts/python/pythonpath. Python-biblioteker hjelper til med å organisere moduler for å forhindre modulkollisjon. Importer uno.py i delte moduler.

Ekte BASIC UNO-fasiliteter kan utledes ved hjelp av uno.py -modulen. Bruk Python interaktivt skall for å få en komplett modulbeskrivelse ved hjelp av dir () og hjelp () Python-kommandoer.

Funksjoner

Beskrivelse

Mappet i Basic som

absolutize()

Returnerer en absolutt filadresse fra de oppgitte nettadressene.

createUnoStruct()

skaper en UNO-strukt eller unntak gitt av typeNavn.

CreateUNOStruct()

fileUrlToSystemPath()

Returnerer en system sti.

ConvertFromURL()

getClass()

Returnerer klassen av et konkret UNO-unntak, strukt eller grensesnitt.

getComponentContext()

Returnerer UNO-komponentkonteksten som brukes til å igangsette Python-kjøretidsrutine.

GetDefaultContext()

Enum()

getConstantByName()

Ser opp verdien av en IDL konstant ved å gi sitt eksplisitte navn.

Se API konstant-grupper

isInterface()

Returnerer True, når obj er en klasse med et UNO-grensesnitt.

systemPathToFileUrl()

Returnerer en filadresse for den oppgitte systembanen.

ConvertToURL()


Delte skript i LibreLogo og TableSample bruker uno.py-modul.

Flere Python-Basic-eksempler

Python UNO

Basic UNO-egenskaper

ctx = uno.getComponentContext()

smgr = ctx.getServiceManager()

obj = smgr.createInstanceWithContext( .. , ctx)

CreateUnoService()

Se Åpning av en dialog

CreateUnoDialog()

Se Opprettelse av lytter

CreateUnoListener()

Se UNO-datatyper

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


Importering av innebygget modul

På samme måte som Collabora Office Basic som støtter surfing og dynamisk lasting av biblioteker, kan Python-biblioteker utforskes og importeres etter behov. For mer informasjon om biblioteksbeholdere, besøk Collabora Office Application Programming Interface (API) eller last ned Collabora Office Software Development Kit (SDK).

Importering av en Python-dokument-integrert modul er illustrert nedenfor, unntakshåndteringen er ikke detaljert:


            import uno, sys
            
            def load_library(library_name: str, module_name=None):
                """ last inn biblioteket og importer modul
                
                Hentet fra «Bibliothèque de fonctions» av Hubert Lambert
                på https://forum.openoffice.org/fr/forum/viewtopic.php?p=286213"""
                doc = XSCRIPTCONTEXT.getDocument()  # gjeldende dokument
                url = uno.fileUrlToSystemPath( \
                    '{}/{}'.format(doc.URL, 'Scripts/python'+library_name))  # ConvertToURL()
                hvis ikke url i sys.path:  # legg til sti hvis nødvendig
                    sys.path.insert(0, url)  # doc har forrang
                if module_name:  # importer dersom det er nødvendig
                    return zipimport.zipimporter(url).load_module(module_name)
            
            def import_embedded_python():
                ui = load_library("my_gui",'screen_io')  # legg til <lib> sti + import <module>
                ui.MsgBox(sys.modules.keys())
            
            g_exportedScripts = (import_embedded_python,)  # Public macros
        

Supporter oss!