Pemrograman dengan Skrip Python

A Python macro is a function within a .py file, identified as a module. Unlike LibreOffice Basic and its dozen of UNO objects functions or services, Python macros use the XSCRIPTCONTEXT UNO single object, shared with JavaScript and BeanShell. The g_exportedScripts global tuple explicitly lists selectable macros from a module. Python modules hold autonomous code logic, and are independent from one another.

XSCRIPTCONTEXT Variabel Global

Genuine Basic UNO facilities can be inferred from XSCRIPTCONTEXT global variable. Refer to LibreOffice API for a complete description of XSCRIPTCONTEXT. XSCRIPTCONTEXT methods summarize as:

Metode

Keterangan

Dipetakan di Basic sebagai

getDocument()

Referensi dokumen tempat skrip dapat beroperasi.

ThisComponent

getDesktop()

Referensi dekstop tempat skrip dapat beroperasi.

StarDesktop

getComponentContext()

Konteks komponen yang dapat digunakan skrip untuk membuat komponen uno lainnya.

GetDefaultContext


HelloWorlddanCapitaliseskrip berbagi pemasangan mengilustrasikan makro terkait UNO memanfaatkanXSCRIPTCONTEXTvariabel global

tip

File output standar Python tidak tersedia saat menjalankan makro PythonAlat - Macro - Jalankan Macromenu. Mengacu padaInput / Output ke Layaruntuk informasi lebih lanjut.


Impor modul

warning

XSCRIPTCONTEXTtidak disediakan untuk modul yang diimpor.


LibreOffice Basic libraries contain classes, routines and variables, Python modules contain classes, functions and variables. Common pieces of reusable Python or UNO features must be stored in My macros within (User Profile)/Scripts/python/pythonpath. Python libraries help organize modules in order to prevent module name collisions. Import uno.py inside shared modules.

Genuine BASIC UNO facilities can be inferred using uno.py module. Use Python interactive shell to get a complete module description using dir() and help() Python commands.

Fungsi

Keterangan

Dipetakan di Basic sebagai

absolutize()

Mengembalikan url file absolut dari url yang diberikan.

createUnoStruct()

Membuat UNO struct atau pengecualian yang diberikan oleh typeName.

CreateUNOStruct()

fileUrlToSystemPath()

Menggembalikan jalur sistem

ConvertFromURL()

getClass()

Mengembalikan kelas pengecualian UNO beton, struct, atau antarmuka.

getComponentContext()

Mengembalikan konteks komponen UNO yang digunakan untuk menginisialisasi runtime Python.

GetDefaultContext()

Enum()

getConstantByName()

Mencari nilai konstanta IDL dengan memberikan nama eksplisitnya.

Lihat grup konstan API

isInterface()

Mengembalikan Benar, ketika obj adalah kelas antarmuka UNO.

systemPathToFileUrl()

Mengembalikan URL file untuk jalur sistem yang diberikan.

ConvertToURL()


LibreLogo, NamedRanges, SetCellColor and TableSample preinstalled scripts use uno.py module.

Lebih banyak sample Phython-Basic

Python UNO

Basic UNO Fitur

ctx = uno.getComponentContext()

smgr = ctx.getServiceManager()

obj = smgr.createInstanceWithContext( .. , ctx)

CreateUnoService()

See Opening a Dialog

CreateUnoDialog()

See Creating a Listener

CreateUnoListener()

Melihat tipe data 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


Importing an embedded Module

Similarly to LibreOffice Basic that supports browsing and dynamic loading of libraries, Python libraries can be explored and imported on demand. For more information on library containers, visit LibreOffice Application Programming Interface (API) or download LibreOffice Software Development Kit (SDK).

Importing a Python document embedded module is illustrated below, exception handling is not detailed:


            import uno, sys, zipimport
            
            def load_library(library_name: str, module_name=None):
                memeuat perpustakaan dan modul impor
                
                diadaptasi dari 'library of functions' oleh Hubert lambert
                pada https://forum.openoffice.org/fr/forum/viewtopic.php?p=286213"""
                doc = XSCRIPTCONTEXT.getDocument()  # dokumen saat ini
                url = uno.fileUrlToSystemPath( \
                    '{}/{}'.format(doc.URL, 'Scripts/python'+library_name))  # ConvertToURL()
                jika tidak di url sys.path:  # tambah path jika perlu
                    sisipkan(0, url) sys.path.  # doclib diutamakan
                f module_name:  # impor jika diminta
                    return zipimport.zipimporter(url).load_module(module_name)
            
            def import_embedded_python():
                ui = load_library("my_gui",'screen_io')  # tambahkan <lib> path + import <module>
                ui.MsgBox(sys.modules.keys())
            
            g_exportedScripts = (import_embedded_python,)  # Public macros
        

Mohon dukung kami!