søndag den 28. april 2019

Programmering med Python

Programmeringssproget Python vinder stor udbredelse for tiden, hvilket måske hænger sammen med at det er et programmeringssprog som er open source, og som ikke er afhængig af et bestemt operativsystem. Python er, lige som Java, helt platformsuafhængig. Til gengæld forudsætter afvikling af programmerne, at brugeren har et afviklingsmiljø installeret.

Python bruges i øvrigt som makrosprog i mange open source programmer, f.eks. Inkscape, Gimp og LibreOffice.

Når du downloader og installerer LibreOffice, får du helt automatisk et Python afviklingsmiljø med i pakken.

Python i LibreOffice

Hvis du programmerer makroer i LibreOffice Basic, benytter du den indbyggede IDE (integrated Development Environment), men til Python må du selv vælge hvilket udviklingsmiljø du gerne vil bruge. Der er mange at vælge imellem. Geany, PyCharm og Eclipse er bare eksempler.

Der er tre ting du skal være opmærksom på, inden du går i gang:
  1. Pythonfilen skal være placeret i dit brugerkatalog under user/Scripts/python/ eller en folder derunder. På min PC er det her: /home/leif/.config/libreoffice/4/user/Scripts/python
  2. Den makro (Python-funktion) du gerne vil stille til rådighed i LibreOffice brugergrænsefladen skal "udstilles" ved at tilføje navnet til Tuple-variablen g_exportedScripts.
  3. For at tilgå dokumentobjekter i LibreOffice skal du benytte XSCRIPTCONTEXT ved at kalde en af funktionerne getDocument (), getInvocationContext (), getDesktop (), getComponentContext (). Når først du har gjort det, kan du tilgå LibreOffice ad bagvejen, altså programmere makroer.
Her er et klassisk eksempel (Hello world):

# -*- coding: utf-8 -*-
# !/usr/bin/env python

import uno

def HelloWorld():
    """Write Helo World in Writer"""

    try:
        ctx = remote_ctx                   # use in development
    except:
        ctx = uno.getComponentContext()    # use in production

    # get desktop
    desktop = ctx.getByName("/singletons/com.sun.star.frame.theDesktop")
    # get document
    document = desktop.getCurrentComponent()
    # access the document's text property
    text = document.Text
    # create a cursor
    cursor = text.createTextCursor()
    # insert the text into the document
    text.insertString(cursor, "Hello World", 0)

HelloWorld()

g_exportedScripts = HelloWorld,


Du kan læse mere om Python i LibreOffice her: https://help.libreoffice.org/6.3/en-US/text/sbasic/python/main0000.html

Du kan læse mere om XSCRIPTCONTEXT her: https://wiki.openoffice.org/wiki/Python/Transfer_from_Basic_to_Python

Der er masser af muligheder på internettet for at lære programmering med Python. Du kan f.eks. tage et komplet kursus på Massachusetss Institute of Technology (MIT) helt gratis: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/