Python : Προγραμματισμός με Python

Περιεχόμενα
Δείκτης 🔎︎

# Προγραμματισμός με σενάρια 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

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:

Μέθοδοι | Περιγραφή | Απεικονιζόμενο στη Basic ως
getDocument() | Η αναφορά εγγράφου στο οποίο το σενάριο μπορεί να λειτουργήσει. | ThisComponent
getDesktop() | Η αναφορά επιφάνειας εργασίας στην οποία μπορεί να λειτουργήσει το σενάριο. | StarDesktop
getComponentContext() | Το περιεχόμενο στοιχείου του οποίου το σενάριο μπορεί να χρησιμοποιηθεί για τη δημιουργία άλλων. | GetDefaultContext

Η εγκατάσταση των κοινόχρηστων σεναρίων HelloWorld και Capitalise δείχνουν τις σχετικές με το UNO μακροεντολές που χρησιμοποιούν την καθολική μεταβλητή XSCRIPTCONTEXT.

Το αρχείο εξόδου προτύπου Python δεν είναι διαθέσιμο όταν εκτελούνται μακροεντολές Python από το μενού Εργαλεία - Μακροεντολές - Εκτέλεση μακροεντολών. Δείτε το Είσοδος/Έξοδος στην οθόνη για περισσότερες πληροφορίες.

## Εισαγωγή αρθρώματος

Το XSCRIPTCONTEXT δεν παρέχεται σε εισαγόμενα αρθρώματα.

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.

Συναρτήσεις | Περιγραφή | Απεικονιζόμενο στη Basic ως
absolutize() | Επιστρέφει απόλυτα url αρχείου από τα δεδομένα urls. |
createUnoStruct() | Δημιουργεί δομή UNO ή εξαίρεση που δίνεται από το typeName. | CreateUNOStruct()
fileUrlToSystemPath() | Επιστρέφει διαδρομή του συστήματος. | ConvertFromURL()
getClass() | Επιστρέφει την κλάση συμπαγούς εξαίρεσης UNO, δομής ή διεπαφής. |
getComponentContext() | Επιστρέφει το περιεχόμενο του στοιχείου που χρησιμοποιείται για την αρχικοποίηση του χρόνου έναρξης Python. | GetDefaultContext()
Enum() getConstantByName() | Αναζητά την τιμή σταθεράς IDL δίνοντας το ρητό της όνομα. | Δείτε ομάδες σταθερών API
isInterface() | Επιστρέφει True, όταν το obj είναι κλάση διεπαφής UNO. |
systemPathToFileUrl() | Επιστρέφει URL αρχείου για τη δεδομένη διαδρομή συστήματος. | ConvertToURL()

Τα κοινόχρηστα σενάρια εγκατάστασης LibreLogo και TableSample χρησιμοποιούν το άρθρωμα uno.py.

## Περισσότερα δείγματα Python-Basic

Python UNO | Βασικά χαρακτηριστικά UNO
ctx = uno.getComponentContext() smgr = ctx.getServiceManager() obj = smgr.createInstanceWithContext( .. , ctx) | CreateUnoService()
See Opening a Dialog | CreateUnoDialog()
See Creating a Listener | CreateUnoListener()
Δείτε τύποι δεδομένων 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

## Εισαγωγή ενσωματωμένου αρθρώματος

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

Η εισαγωγή ενσωματωμένου αρθρώματος εγγράφου Python δείχνεται παρακάτω, ο χειρισμός εξαίρεσης δεν δίνεται με λεπτομέρειες:

                import uno, sys

                def load_library(library_name: str, module_name=None):
                    """ load library and import module

                    Διασκευασμένο από τη 'Bibliothèque de fonctions' του Hubert Lambert
                    στο https://forum.openoffice.org/fr/forum/viewtopic.php?p=286213"""
                    doc = XSCRIPTCONTEXT.getDocument()  # τρέχον έγγραφο
                    url = uno.fileUrlToSystemPath( \
                        '{}/{}'.format(doc.URL, 'Scripts/python'+library_name))  # ConvertToURL()
                    if not url in sys.path:  # προσθέστε τη διαδρομή εάν χρειάζεται
                        sys.path.insert(0, url)  # doclib takes precedence
                    if module_name:  # εισαγωγή εάν ζητηθεί
                        return zipimport.zipimporter(url).load_module(module_name)

                def import_embedded_python():
                    ui = load_library("my_gui",'screen_io')  # προσθήκη διαδρομής <lib> + εισαγωγή <module>
                    ui.MsgBox(sys.modules.keys())

                g_exportedScripts = (import_embedded_python,)  # Public macros

Σχετικά θέματα

Basic UNO Objects, Functions and Services

Εισαγωγή αρθρωμάτων Python

Είσοδος/Έξοδος στην οθόνη

Βοήθεια δεσμών ενεργειών Python του LibreOffice