Collabora Office 24.04 Hjelp
Collabora Office Python-skript kommer i tre forskjellige smaker, de kan være personlige, delte eller innebygd i dokumenter. De lagres på forskjellige som steder beskrevet iPython Skript Organisering og Plassering. For å kunne importere Python-moduler, må deres beliggenhet være kjent fra Python under kjøretid.
Denne mekanismen er illustrert for filsystembaserte moduler og dokumentbaserte moduler. Unntakshåndtering utelates for enkelhetens skyld. Vilkårs bibliotek eller katalog, skript eller moduler brukes om hverandre. En Python-makro refererer til en funksjon inne i en modul.
Noter at<User Profile>Scripts/python/pythonpathlokal katalog utforskes alltid når en Phyton makro kjøres fra<User Profile>/Scripts/python.
Personlige og delte Python-skript kan importeres når bibliotekene er importert i Python-kjøremiljøet. Se siden Hent informasjon for mer informasjon om utelatt sesjonsklasse.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import sys
user_lib = Session().UserPythonScripts # User scripts location
if not user_lib in sys.path:
sys.path.insert(0, user_lib) # Legg til i søkesstien
import screen_io as ui # 'screen_io.py' modulen finnes i user_lib directory
# Koden din følger her
Dette Python-eksemplet eksponerer en lokal XSCRIPTCONTEXT-variabel for en importert modul:
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import uno, sys
share_lib = Session.SharedPythonScripts() # Delte skriptplasseringer
if not share_lib in sys.path:
sys.path.insert(0, share_lib) #Legg til i søkestien
fra IDE_utils import ScriptContext # 'IDE_utils.py' finnes sammen med delte Python-skript.
XSCRIPTCONTEXT = ScriptContext(uno.getComponentContext)
# Koden din følger her
I motsetning til personlige og delte skript, kan Collabora Office installasjonsskript importeres når som helst. Ved siden av uno & unohelper Collabora Office Python-moduler, kan andre skript som er tilstede i<installation_path>/program -katalogen importeres direkte, for eksempel msgbox -modulen.
Med Python-skall:
>>> import msgbox, uno
>>> myBox = msgbox.MsgBox(uno.getComponentContext())
>>> myBox.addButton("okay")
>>> myBox.renderFromButtonSize()
>>> myBox.numberOflines = 2
>>> print(myBox.show("A small message",0,"Dialog title"))
Import av en Python-dokument innebygd modul er illustrert nedenfor. Feilhåndtering er ikke på et detaljert nivå. Python-kjøretidsstien oppdateres når dokumentet er åpnet og før lukking. Sjekk Hendelsesdrevne makroer for å lære hvordan du knytter Python-makroer til dokumenthendelser.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
import sys, uno
def OnDocPostOpenLoadPython():
""" Forbered Python-modul import når dok.lastet """
PythonLibraries.loadLibrary('lib/subdir') # Legg til katalog i søkestien
PythonLibraries.loadLibrary('my_gui', 'screen_io') # Add dir. & import screen_io
def OnDocQueryCloseUnloadPython():
""" Rens opp PYTHON_PATH når dok. Lukkes """
PythonLibraries.unloadLibrary('my_gui') # Opprydding av Python kjøremiljø
# Merk: importerte moduler er fortsatt lastet i dette eksemplet.
class PythonLibraries():
""" Python-biblioteklaster og modulimporterer
tilpasset fra 'Bibliothèque de fonctions' av Hubert Lambert
ved https://forum.openoffice.org/fr/forum/viewtopic.php?p=286213 """
def isImportedModule(module_name: str) -> bool:
""" Sjekk kjøretidsmiljø-modullisten """
return (module_name in sys.modules.keys())
def isLoadedLibrary(lib_name: str) -> bool:
""" Kontroller PYTHON_PATH-innholdet """
return (lib_name in sys.path)
def loadLibrary(lib_name: str, module_name=None):
""" legg til katalog i PYTHON_PATH, importer navngitt modul """
doc = XSCRIPTCONTEXT.getDocument()
url = uno.fileUrlToSystemPath(
'{}/{}'.format(doc.URL,'Scripts/python/'+lib_name)
if not url in sys.path:
sys.path.insert(0, url)
if module_name and not module_name in sys.modules.keys():
return zipimport.zipimporter(url).load_module(module_name)
def unloadLibrary(lib_name: str):
""" fjern katalog fra PYTHON_PATH """
sys.path.remove(lib_name)
g_exportedScripts = (OnDocPostOpenLoadPython, OnDocQueryCloseUnloadPython)