Isi
Indeks 🔎︎

# 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 | Deskripsi | 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

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

## Impor modul

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

LibreLogodanTableSampleinstalasi gunakan skrip bersamauno.pymodul.

## 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

## mengimpor modul yang tertanam

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

mengimpor modul yang tertanam dokumen phyton diilustrasikan dibawah ini, pengecualian jika penanganan tidak rinci

                import uno, sys

                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

Topik Terkait

Basic UNO Objects, Functions and Services

Importing Python Modules

Input/Output to Screen

Bantuan Skrip Python LibreOffice