Programming gamit ang Python Scripts

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.

XSCRIPTCONTEXT Global Variable

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.

tip

Ang Python standard output file ay hindi available kapag nagpapatakbo ng Python macros mula sa Mga Tool - Macro - Patakbuhin ang Macro menu. Sumangguni sa Input/Output sa Screen para sa karagdagang impormasyon.


Pag-import ng module

warning

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.

Higit pang mga sample ng Python-Basic

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()

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


Pag-import ng naka-embed na Module

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
        

Mangyaring suportahan kami!