Tulong sa LibreOffice 25.8
Ang Python macro ay isang function sa loob ng isang .py file, na kinilala bilang isang module. Hindi tulad ng LibreOffice Basic at ang dose nito UNO object function o serbisyo , ginagamit ng Python macros ang XSCRIPTCONTEXT UNO solong object, ibinahagi sa JavaScript at BeanShell. Ang g_exportedScripts Ang global tuple ay tahasang naglilista ng mga mapipiling macro mula sa isang module. Ang mga module ng Python ay may hawak na autonomous code logic, at independyente sa isa't isa.
Ang tunay na mga pasilidad ng Basic UNO ay maaaring mahihinuha mula sa XSCRIPTCONTEXT pandaigdigang variable. Sumangguni sa LibreOffice API para sa kumpletong paglalarawan ng XSCRIPTCONTEXT . XSCRIPTCONTEXT ang mga pamamaraan ay nagbubuod bilang:
| Pamamaraan | Mga nilalaman | Naka-map sa Basic bilang | 
|---|---|---|
| getDocument() | Ang sanggunian ng dokumento kung saan maaaring gumana ang script. | ThisComponent | 
| getDesktop() | Ang desktop reference kung saan maaaring gumana ang script. | StarDesktop | 
| getComponentContext() | Ang konteksto ng bahagi na magagamit ng script upang lumikha ng iba pang mga bahagi ng uno. | GetDefaultContext | 
HelloWorld at I-capitalize ang mga nakabahaging script sa pag-install ay naglalarawan ng mga macro na nauugnay sa UNO na gumagamit ng XSCRIPTCONTEXT pandaigdigang variable.
Ang Python standard output file ay hindi available kapag nagpapatakbo ng Python macros mula sa menu. Sumangguni sa Input/Output sa Screen para sa karagdagang impormasyon.
XSCRIPTCONTEXT ay hindi ibinigay sa mga na-import na module.
Ang LibreOffice na mga pangunahing aklatan ay naglalaman ng mga klase, routine at variable, ang Python module ay naglalaman ng mga klase, function at variable. Ang mga karaniwang piraso ng magagamit muli na Python o mga tampok ng UNO ay dapat na naka-imbak sa Mga macro ko sa loob (Profile ng User)/Scripts/python/pythonpath . Ang mga library ng Python ay tumutulong sa pag-aayos ng mga module upang maiwasan ang mga banggaan ng pangalan ng module. Mag-import uno.py sa loob ng mga nakabahaging module.
Ang mga tunay na BASIC UNO na pasilidad ay maaaring mahihinuha gamit uno.py modyul. Gamitin Python interactive na shell upang makakuha ng kumpletong paglalarawan ng module gamit ang dir() at tulong() Mga utos ng Python.
| Mga pag-andar | Mga nilalaman | Naka-map sa Basic bilang | 
|---|---|---|
| absolutize() | Nagbabalik ng ganap na url ng file mula sa mga ibinigay na url. | |
| createUnoStruct() | Lumilikha ng UNO struct o exception na ibinigay ng typeName. | CreateUNOStruct() | 
| fileUrlToSystemPath() | Nagbabalik ng path ng system. | ConvertFromURL() | 
| getClass() | Ibinabalik ang klase ng isang konkretong UNO exception, struct, o interface. | |
| getComponentContext() | Ibinabalik ang konteksto ng bahagi ng UNO na ginamit upang simulan ang Python runtime. | GetDefaultContext() | 
| Enum() getConstantByName() | Hinahanap ang halaga ng isang IDL constant sa pamamagitan ng pagbibigay ng tahasang pangalan nito. | Tingnan ang mga pare-parehong pangkat ng API | 
| isInterface() | Nagbabalik ng True, kapag ang obj ay isang klase ng interface ng UNO. | |
| systemPathToFileUrl() | Nagbabalik ng URL ng file para sa ibinigay na path ng system. | ConvertToURL() | 
LibreLogo , NamedRanges , SetCellColor at TableSample ginagamit ang mga naka-install na script uno.py modyul.
| Python UNO | Mga pangunahing tampok ng UNO | 
|---|---|
| ctx = uno.getComponentContext() smgr = ctx.getServiceManager() obj = smgr.createInstanceWithContext( .. , ctx) | CreateUnoService() | 
| Tingnan mo Pagbubukas ng Dialog | CreateUnoDialog() | 
| Tingnan mo Paglikha ng Tagapakinig | CreateUnoListener() | 
| Tingnan ang mga uri ng data ng UNO | CreateUnoValue() CreateObject() | 
| Gumamit ng "==" o "!=" na mga operator ng paghahambing | 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 | 
Katulad ng LibreOffice Basic na sumusuporta sa pagba-browse at dynamic na pag-load ng mga library, ang mga library ng Python ay maaaring galugarin at i-import kapag hinihiling. Para sa higit pang impormasyon sa mga lalagyan ng library, bisitahin ang LibreOffice Application Programming Interface (API) o i-download LibreOffice Software Development Kit (SDK).
Ang pag-import ng isang Python document na naka-embed na module ay inilalarawan sa ibaba, ang exception handling ay hindi detalyado:
            import uno, sys, zipimport
            
            def load_library(library_name: str, module_name=None):
                """ i-load ang library at import module
                
                Hinango mula sa 'Bibliothèque de fonctions' ni Hubert Lambert
                sa https://forum.openoffice.org/fr/forum/viewtopic.php?p=286213"""
                doc = XSCRIPTCONTEXT.getDocument() # kasalukuyang dokumento
                url = uno.fileUrlToSystemPath( \
                    '{}/{}'.format(doc.URL, 'Scripts/python'+library_name))  # ConvertToURL()
                kung hindi url sa sys.path: # magdagdag ng landas kung kinakailangan
                    sys.path.insert(0, url) # doclib ang inuuna
                kung module_name: # import kung hiniling
                    return zipimport.zipimporter(url).load_module(module_name)
            
            def import_embedded_python():
                ui = load_library("my_gui", 'screen_io') # idagdag<lib> landas + pag-import<module>
                ui.MsgBox(sys.modules.keys())
            
            g_exportedScripts = (import_embedded_python,)  # Public macros