Kapitel 3

Dr. Bernd Kokavecz
python

Graphische Oberflächen programmieren mit Python


Die Programmierung graphischer Oberflächen erfolgt heute im kommerziellen Bereich in der Regel mit Hilfe sogenannter "Interface-Builder". Auch wenn es Sinn machen kann, solche Werkzeuge Schülern im Informatikunterricht an die Hand zu geben (Java-Workshop, Python-Glade, PythonWin), so sollte dies nicht gleich im Anfängerunterricht geschehen. Ein wichtiges Ziel des Unterrichts besteht darin, grundsätzliche Konzepte und Arbeitsweisen zu verstehen. Komfortable Oberflächen verstellen oft den Blick für das Wesentliche, machen u.U. oberflächlich. DIE OBERFLÄCHE IST NICHT DAS SYSTEM!

Als Arbeitsumgebung verwende ich mit meinen Schülern ein Editorfenster (KEdit), ein Kommandofenster (KTerm) und zwei Netscapefenster, um die Python- bzw. tkInter-Dokumentation (im HTML-Format) zu "browsen".

Die graphische Oberfläche der folgenden Programmieraufgabe wird "per Hand" kodiert. Natürlich gibt es Situationen, in denen die Oberfläche eines Programms nicht das eigentliche Thema des Unterrichts ist. In diesem Fall sollte man auf Oberflächen ganz verzichten oder aber als Lehrer die entsprechenden Klassen bereitstellen. Sinnvoll ist auch die Erstellung einer "Werkzeugkiste" (Toolbox), in der entsprechende Hilfsmittel abrufbereit liegen (neue BICS-Tools?). Im Fortgeschrittenenunterricht ist latürnich auch der Einsatz eines "Interface-Builders" denkbar.

Aufgabe:

Dateiauswahl
Es ist ein Dateiauswahlfenster zu programmieren, das ein Bewegen im Dateibaum erlaubt und die Filterung bestimmter Dateitypen gestattet. Die Abbildung zeigt, dass das Fenster mit Hilfe der Maus "aufgezogen" (d.h. vergrößert) werden kann. Dabei müssen die Fenster-Elemente sich sinnvoll der Fenstergröße anpassen.

Lesen Sie weitere Details der Anforderungsdefinition.

Bei den meisten Programmiersprachen gibt es für die Anordnung der Fensterelemente sogenannte Geometriemanager. Die einfachste Version plaziert die Knöpfe und weiteren Elemente an festen Positionen, die durch Koordinatenbeschreibungen festgelegt werden. Ein solcher Geometriemanager wird meines Wissens bei Delphi verwendet. Bei Fenstergrößenänderungen kann hier keine sinnvolle Anpassung erfolgen. Verfügt ein solcher "Place-Manager" auch über die Möglichkeit einer relativen Positionierung, sehen die Verhältnisse schon besser aus. Der "Grid-Manager" verwaltet das Fenster ähnlich einer Tabellenkalkulatuion und ist auch relativ beschränkt in seinen Möglichkeiten. Der "Pack-Manager" hingegen berechnet stets den aktuell verfügbaren Platz für die Fensterelemente und kann somit eine jeweilige Anpassung an die Fenstergröße vornehmen. Leider ist es aber auch dieser Geometrie-Manager, der am schwierigsten zu programmieren ist. Deshalb wollen wir uns ausschließlich mit diesem beschäftigen.

Auch bei der Programmierung graphischer Oberflächen zeigt Python seine Stärke. Mit Hilfe der "named-Parameter" und der sinnvoll besetzten Defaultwerte kann man oft mit wenig Aufwand ansprechende Oberflächen erstellen.

Lesen Sie: "Der Packer", ein Geometriemanager

Die Klasse Tool1 stellt den Schülern einige kombinierte grafische Elemente bereit. Sie enthält eine beschriftete Eingabezeile, ein Listenfenster mit Schiebern (Scrollbars) und eine Anordnung von drei Bedienknöpfen (Buttoms). Mit Hilfe der Abfrage der Systemvariablen __name__ kann unterschieden werden, ob die Datei als Klassenbibliothek oder als eigenständiges Programm verwendet wird. Nur im zweiten Fall wird das am Schluß stehende "Klassentestprogramm" ausgeführt.

Den Quelltext dieses Tools und das Ergebnis des Tests sehen sie HIER!

Das Abschlussbeispiel zeigt die Programmierung des Dateiauswahlfensters (GUI-Klasse). Das zugehörige Fachkonzept wird später vorgestellt. In diesem Beispiel können Sie die Anwendung von "Frames" studieren. (Einblick in den Quelltext zum oben abgebildeten "Dateiauswahlfenster") Im Verzeichnis SOFTWARE (beim Download) finden Sie das komplette Tool, mit einem Anwendungsbeispiel (klick: demo.py) !

Als Referenz für die GUI-Programmierung mit TkInter stehen im Internet mehrere Dokumentationen zur Verfügung. Suchen Sie z.B. nach dem "life-preserver-html.tar.gz".

python zurück zur Startseite

Dr. Bernd Kokavecz
Datum: 25.04.2000
dr.bernd@kokavecz.de