Home / LinuxUser / 2000 / 08 / Einführung in Tcl/Tk, Teil 3

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

Die Kommandozeile macht sich schön

Einführung in Tcl/Tk, Teil 3

Optik

Bei der Entwicklung Ihres grafischen Programms verfahren Sie in vier Schritten:

  • Sie überlegen sich die Funktionen, die das Programm zur Verfügung stellen soll.
  • Sie finden heraus, wie die Nutzer auf Funktionen zugreifen sollen und erstellen einen ersten Prototypen auf Papier.
  • Sie programmieren die grafische Darstellung ohne Funktionen.
  • Wenn Ihnen alles gefällt, programmieren Sie die Funktionen hinzu.Überlegen Sie also als Erstes, was Ihre Oberfläche können soll bzw. was die spätere Nutzerin des Programms an Funktionalität braucht. Lehnen Sie sich zurück, und stellen Sie sich vor, wie Sie oder diejenige, die Sie mit Ihrem GUI beglücken möchten, vor dem Rechner sitzt und Povray bedienen will.

Das könnte z.B. so aussehen: Sie ist gerade dabei, mit einem Editor ihrer Wahl die Datei mit der Povray-Szenenbeschreibung zu erstellen, und möchte nun einfach einen Button drücken, um ihre neuesten Änderungen bildlich zu sehen. Dazu muss die Szene zunächst gerendert und die Bilddatei dann von einem Grafikprogramm angezeigt werden.

Ihre Nutzerin möchte die Größe des zu rendernden Bilds variieren können, um während des Entwicklungsprozesses kleine und am Ende größere Bilder zu berechnen. (Je größer das Bild, desto länger dauert der Povray-Lauf, und so lange möchte sie bei der Entwicklung dann auch nicht immer warten.) Außerdem will sie den Bildern unterschiedliche Namen geben, um auch Zwischenschritte zu dokumentieren.

Damit ist die Funktionalität Ihres Programms klar und im Kasten "Die Funktionen von povgui" zusammen gestellt.

Die Funktionen von Povgui

  • Eine Möglichkeit zum Auswählen der Datei mit der Szenenbeschreibung.
  • Eine Möglichkeit zum Auswählen der Bilddatei, wobei es nett wäre, wenn das Programm aus dem Namen der Szenendatei einen Vorschlag generiert (Austausch der Dateiendung von .pov nach .tga, siehe auch [8,9]).
  • Einstellmöglichkeiten für Bildhöhe und Bildbreite.
  • Ein Knopf zum Rendern der Szenendatei.
  • Ein Button zum Anzeigen des gerenderten Bilds.

Nun kommt Teil Zwei der Programmentwicklung: Sie müssen sich überlegen, wie Sie diese Funktionen so zur Verfügung stellen, dass sie von der Nutzerin möglich einfach zu bedienen sind, wobei Sie sich so weit möglich an bestehenden Anwendungen orientieren sollten. Zeichnen Sie dann eine kleine Skizze, in der Sie die grobe Form des GUI festlegen. Ja, am besten geht das mit Papier und Bleistift, zum Beispiel so wie in Abbildung 1.

Abbildung 1

Abbildung 1: Erster Prototyp auf Papier

Oberflächlichkeiten

Anschließend gehen Sie daran, diese Oberfläche zu programmieren. Dazu greifen Sie in die Widget-Trickkiste von Tk. In Abbildung 2 sehen Sie das GUI mit der Beschreibung der einzelnen Fensterelemente.

Abbildung 2

Abbildung 2: Die verwendeten Fensterelemente

Bevor Sie loslegen, noch ein paar Worte zu den Widgets und ihrer Organisation.

In Tk sind die Definition und die Anzeige von Fensterelementen voneinander getrennt. Zunächst legen Sie ein Widget fest und bestimmen dessen Konfiguration wie z.B. seine Aufschrift, Farbe etc. Danach erst übergeben Sie es einem Geometrie-Manager, der es anzeigen lässt.

Wählen können Sie aus drei Geometrie-Managern, die die Darstellung der Widgets unterschiedlich handhaben. Heute lernen Sie zwei davon kennen: pack und grid.

Geometrie-Manager haben die Aufgabe, den ihnen übergebenen Widgets genug Raum zur Verfügung zu stellen. Sie organisieren die Fensterelemente hierarchisch, wobei jedes Widget das Kind eines Eltern-Widgets ist. Die Urahnin aller Widgets ist das Fenster, das Ihr Programm umhüllt. Es trägt den Namen "Punkt" (.). Dieses "Ur-Widget" dient als Container für die Widgets, die darin angezeigt werden sollen. Es gibt aber auch noch andere Fensterelemente, die die Aufgabe von Containern übernehmen, zum Beispiel Frames (Rahmen).

Die Geometrie-Manager grid und pack weisen den ihnen übergebenen Widgets eine "Höhle" innerhalb ihrer Eltern-Widgets zu, die mindestens so groß ist, dass das jeweilige Kind-Widget genug Platz hat. Dieser Raum kann aber auch größer als das Widget sein, wenn sein Nachbar einen größeren Platzbedarf hat.

Der "packer" ordnet die Widgets neben- oder übereinander an, je nachdem, mit welchen Optionen er sie übergeben bekommt. Während dessen organisiert der "gridder" seine Widgets in Zeilen und Spalten wie eine Tabellenkalkulation.

Die Höhlen des packers sind in Abbildung 3, die des gridders in Abbildung 4 dargestellt.

Abbildung 3

Abbildung 3: Der packer …

Abbildung 4

Abbildung 4: … und der gridder in Aktion

Beide Geometrie-Manager haben ihre Vorteile, und Sie dürfen sich jeweils den passenden für Ihre Problemlösung aussuchen. Zunächst müssen Sie dazu analysieren, wie Ihre Widgets aufgebaut sind.

Tip a friend    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 137 Punkte (8 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...