Ajuda del LibreOffice 24.8
Una macro Python és una funció dins d'un fitxer .py identificat com un mòdul. A diferència del LibreOffice Basic i la seva dotzena d'objectes unO funcions o serveis macros Python utilitzen un sol objecte XSCRIPTCONTEXT UNO compartit amb JavaScript i BeanShell. Els mòduls gexportedScripts globals llista explícitament macros seleccionables des d'un mòdul. Els mòduls Python mantenen una lògica de codi autònoma i són independents entre ells.
Les instal·lacions genuïnes Basic de l'UNO es poden inferir a partir de la variable global XSCRIPTCONTEXT. Consulteu l'API del LibreOffice per obtenir una descripció completa de XSCRIPTCONTEXT. Els mètodes XSCRIPTCONTEXT es resumeixen com a:
| Mètodes | Descripció | Al Basic es correspon amb | 
|---|---|---|
| getDocument() | La referència del document en el que pot operar l'script. | ThisComponent | 
| getDesktop() | La referència de l'escriptori en el que pot operar l'script. | StarDesktop | 
| getComponentContext() | El context del component que l'script pot utilitzar per crear altres components uno. | GetDefaultContext | 
GA HelloWorld i Capitalise instal·lació scripts compartits il·lustren macros relacionades amb l'UNO fent ús de la variable global XSCRIPTCONTEXT.
El fitxer de sortida estàndard de Python no està disponible quan s'executen macros de Python des del menú . Consulteu Entrada/sortida a pantalla per a obtenir més informació.
GA XSCRIPTCONTEXT no es proporciona als mòduls importats.
Les llibreries bàsiques de PRODUCTNAME contenen classes, rutines i variables, els mòduls Python contenen classes, funcions i variables. Les peces reutilitzables comunes de Python o UNO s'han d'emmagatzemar a Les meves macros dins del (Perfil d'usuari)/Scripts/python/pythonpath. Les llibreries Python ajuden a organitzar els mòduls per evitar col·lisions amb els noms de mòduls. Importeu uno.py dins dels mòduls compartits.
Les instal·lacions genuïnes Basic de l'UNO es poden inferir utilitzant el mòdul uno.py. Utilitzeu l'interpret d'ordres interactiu Python per obtenir una descripció completa del mòdul utilitzant les ordres de Python dir() i help().
| Funcions | Descripció | Al Basic es correspon amb | 
|---|---|---|
| absolutize() | Retorna un URL de fitxer absolut dels URL indicats. | |
| createUnoStruct() | Crea una estructura UNO o una excepció donada pel typeName. | CreateUNOStruct() | 
| fileUrlToSystemPath() | Retorna un camí del sistema. | ConvertFromURL() | 
| getClass() | Retorna la classe d'una excepció concreta de l'UNO, estructura o interfície. | |
| getComponentContext() | Retorna el context del component UNO utilitzat per inicialitzar el temps d'execució de Python. | GetDefaultContext() | 
| Enum() getConstantByName() | Cerca el valor d'una constant IDL donant el seu nom explícit. | Vegeu els grups constants d'API | 
| isInterface() | Retorna Cert, si l'objecte és una classe d'una interfície UNO. | |
| systemPathToFileUrl() | Retorna un URL de fitxer per al camí de sistema indicat. | ConvertToURL() | 
Els scripts preinstal·lats LibreLogo, NamedRanges, SetCellColor i TableSample usen el mòdul uno.py.
| UNO en Python | Funcionalitats bàsiques de l'UNO | 
|---|---|
| ctx = uno.getComponentContext() smgr = ctx.getServiceManager() obj = smgr.createInstanceWithContext( .. , ctx) | CreateUnoService() | 
| Consulteu Obre un diàleg | CreateUnoDialog() | 
| Consulteu Crea un oient | CreateUnoListener() | 
| Vegeu els tipus de dades UNO | 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 | 
De manera similar al Basic de LibreOffice que admet la navegació i la càrrega dinàmica de llibreries, les llibreries de Python es poden explorar i importar sota demanda. Per obtenir més informació sobre els contenidors de llibreries, visiteu la La interfície de programació d'aplicacions (API) de LibreOffice o descarregueu Kit de desenvolupament de programari (SDK) de LibreOffice
La importació d'un mòdul incrustat de documents Python s'il·lustra a continuació, no es detalla la gestió de les excepcions:
            import uno, sys, zipimport
            
            def load_library(library_name: str, module_name=None):
                """ càrrega de la biblioteca i importació del mòdul
                
                Adaptat de «Bibliothèque de fonctions» d'Hubert Lambert
                a https://forum.openoffice.org/fr/forum/viewtopic.php?p=286213"""
                doc = XSCRIPTCONTEXT.getDocument()  # document actual
                url = uno.fileUrlToSystemPath( \
                    '{}/{}'.format(doc.URL, 'Scripts/python'+library_name))  # ConvertToURL()
                if not url in sys.path:  # addició del camí, si cal
                    sys.path.insert(0 url) # doclib té prioritat
                if module_name:  # importació, si s'ha sol·licitat
                    return zipimport.zipimporter(url).load_module(module_name)
            
            def import_embedded_python():
                ui = loadlibrary("mygui"'screenio') # afegeix <lib>camí + importa <module>
                ui.MsgBox(sys.modules.keys())
            
            g_exportedScripts = (import_embedded_python,)  # Public macros