Im Rahmen eines universitären Projektes habe ich ein Python-Modul entworfen, welches Schülerinnen und Schülern ermöglicht, mit Hilfe von Python Vektorgrafiken zu erstellen. Dabei wurde keine grafische Benutzungsschnittstelle erzeugt, wie sie Vektorgrafikprogramme wie Inkscape benutzen, sondern ein Klassenkonzept zum Erzeugen von grafischen Primitiven, welche nur über passende Python-Befehle gesteuert wird.
Schülerinnen und Schüler müssen also beim Erzeugen eines Bildes Kenntnisse von den Attributen und Methoden der verschiedenen Klassen haben, als auch die syntaktischen Regeln der Programmiersprache Python einhalten.
Um der fehlenden Anschaulichkeit dieser Art und Weise der Grafikerzeugung entgegenzuwirken, sind zwei Erweiterungen vorgesehen.
- Der Im- und Export von SVG-Dateien
Dies ist zum einen die einzige Möglichkeit der Speicherung konstruierter Grafiken (neben in Python eingebauten Methoden zu Serialisierung von Objekten), zum anderen ist damit eine Brücke zur Darstellung von Daten mit Hilfe von XML gezeigt. Da gängige Browser einen Großteil der SVG-Spezifikation darstellen können, ist zumindest eine Anschaulichkeit des Konstruktionsergebnis gegeben.
Während der SVG-Export recht einfach zu Implementieren war, stellt sich der SVG-Import als sehr komplex dar, weil die Möglichkeiten von PyObjVG im Vergleich zu SVG sehr reduziert sind. Der SVG-Import muss daher in weiteren PyObjVG Versionen stark überarbeitet bzw. überprüft werden.
- Zeichnen mit Hilfe der Stifte-und-Mäuse-Bibliothek (vgl. Blog-Eintrag)
Es wurde neben dem PyObjVG-Modul, welches ein in sich geschlossenes System zur Datenrepräsentation darstellt, eine Erweiterung für die Stifte-und-Mäuse-Bibliothek (in der Python-Desktop-Version nach Ingo Linkweiler) implementiert, welches Vektorgrafikobjekte des PyObjVG-Moduls interpretiert und entsprechende Zeichenroutinen aufruft. Diese neue „Grafikzeichner“-Klasse ist angepasst an das Signalweiterleitungskonzept des PyObjVG-Moduls und kann daher zur automatisierten Verfolgung des Aussehen der Vektorgrafik genutzt werden.
Das Projekt ist noch nicht beendet. Neben einer kleinen ToDo-Liste im Speziellen für den SVG-Import wurden noch keine größeren Testläufe durchgeführt. Ein spezieller Punkt für die Zukunft, der hier noch anzumerken ist, ist derjenige, dass ich ebenfalls an einer Schnittstelle für die Stifte-und-Mäuse-Bibliothek auf Mobiltelefonen arbeite. Da zum Jahreswechsel eine erste Version einer Portierung der Pygame-Bibliothek für PyS60 Systeme veröffentlich wurde, werde ich diese vor der Überarbeitung meiner Alpha-Version noch testen, vielleicht bieten sich dort verbesserte Möglichkeiten.
Zur Nutzung von PyObjVG auf Desktopsystemen werden folgende Teile benötigt.
Update: Nach Änderung der Lizenzbedingungen (vgl. Blog-Eintrag) nun als Paket verfügbar.
- Das Modul PyObjVG 2.0
- Das Toolkit ElementTree (nur für SVG-Import benötigt)
- Sumwrapper, Modifikation der SuM-Bibliothek, notwendig zur Nutzung der Klasse ‚Grafikzeichner‘.
- Die Klasse Grafikzeichner als Schnittstelle zwischen PyObjVG und SuM