Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung


'Wie werde ich Unix-Guru' als Buch bestellen
A. Willemer
Wie werde ich UNIX-Guru
I  ANWENDUNG
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.

II  ADMINISTRATION
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel

III  NETZWERK
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls

IV  DAS X-WINDOW SYSTEM
Die grafische Oberfläche von UNIX einrichten und nutzen

V  PROGRAMMIERUNG VON SHELLSKRIPTEN
Automatisieren von Tasks durch Shell-Skripte.

VI  PERL
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk

VII  PROGRAMMIERWERKZEUGE
C-Compiler, Analyse-Tools, CVS, yacc, diff

VIII  UNIX-SYSTEMAUFRUFE
UNIX-Befehle in eigenen Programmen nutzen

IX  LITERATUR
Weiterführende Literatur zu UNIX und LINUX

 
Galileo Computing / <openbook> / "Wie werde ich UNIX-Guru ?"
« Kontrollelemente Grafische Oberfläche: Tk Informationsquellen »

Unterabschnitte
  • Informationen

Widgetanordnung

Im vorigen Abschnitt wurde bereits von der Funktion pack ausgiebig Gebrauch gemacht. Die einfachste Variante ist der Aufruf ohne Parameter. Dann werden die Widgets nacheinander in das Fenster gestopft und ihre Anordnung ist eher zufällig. Immerhin erfüllen die Widgets auch so ihre Funktionalität.

Durch die Option -side kann die Richtung angegeben werden, von der aus das Fenster aufgefüllt wird. Die üblichen Argumente der Option sind 'top' und 'left'. Dann werden die Widgets nacheinander von oben nach unten, respektive von links nach rechts aufgefüllt. Natürlich gibt es auch die Argumente 'bottom' und 'right'. Der Vorgabewert ist übrigens 'top'. Das Vorgehen kann man sich vorstellen, als würde man mit der Kreissäge ein Stück des Fensters abschneiden. Ein Aufruf von pack mit der Option -side 'top' würde also für das Widget die obere Kante des Fensters abtrennen. Es verbleibt zur freien Verteilung der untere Rest. Diesen können Sie wiederum an einer der Kanten absägen. Ein Problem ergibt sich, wenn Sie folgendes Fenster aus Label, Listbox, Scrollbar und zwei Buttons erstellen wollen.


Probleme bei der Widget-Anordnung

Das Absägen des Titels ist noch trivial. In dem Moment, wo Sie aber links die Listbox abtrennen, bekommen Sie den Button nicht mehr unter die Listbox. Schneiden Sie dagegen die Listbox oben ab, fehlt Ihnen der Scrollbar an der rechten Seite. Man müsste Listbox und Scrollbar gemeinsam abtrennen können. Genau zu diesem Zweck gibt es Rahmen, die Tk Frame nennt. Sie werden wie ein normales Widget erzeugt, bekommen aber ihre Bedeutung beim Packen. Listbox und Scrollbar geben ihrer Packfunktion die zusätzliche Option -in und als Argument die Framevariable.

#!/usr/bin/perl -w
use strict;
use Tk;

my
 $mw = MainWindow->new;
my$

titel =
 $mw->Label(-text=>"Oben",
                                -relief=>'groove');
my$

framelist = liste =
 $mw->Listbox(-height => 4);
my$

scroll =
 $mw->Scrollbar(-command, [yview=>$

liste]);

 $liste->configure(-yscrollcommand => ['set',$

scroll]);
my mw->Button(-text => "Links");
my mw->Button(-text => "Rechts");

 $liste->insert(0,'eins','zwei','drei','vier','fünf');
# Anordnung der beteiligten Akteure$

titel->pack(-side,'top');

 $framelist->pack(-side,'top');$

liste->pack(-in=>
 $framelist, -side,'left');$

scroll->pack(-in=>
 $framelist, -side,'right');$

lbut->pack(-side,'left');

 $rbut->pack(-side,'right');
MainLoop;$

Nun sind die Elemente an den gewünschten Positionen. Beim näheren Betrachten stellen Sie aber fest, dass der Scrollbar sehr klein geraten ist. Und auch die Überschrift ist ein wenig zu kurz gekommen.


Richtige Widget-Anordnung

Ein Widget wird von sich aus nur soviel Platz in Anspruch nehmen, wie es benötigt. Diese Bescheidenheit bewirkt aber optische Unschönheiten, wenn beispielsweise drei unterschiedlich breite Buttons untereinander angeordnet sind. Hier kann man das Widget auffordern, den Raum in x-Richtung aufzufüllen, indem man als Argument für -fill 'x' angibt. Naheliegenderweise gibt es dann auch 'y' für das senkrechte Ausfüllen. Das Argument 'none' ist der Vorgabewert und füllt gar nichts aus.

Im Beispiel muss dem Scrollbar mitgeteilt werden, dass er bitte den vertikalen Raum füllen möge und den Titel müssen Sie anweisen, die gesamte Breite zu belegen. Die geänderten Zeilen lauten:

$titel->pack(-side,'top',-fill=>'x');
$scroll->pack(-in=>
 $framelist, -side,'right',-fill=>'y');$

Informationen
Für die Erstellung von grafischen Oberlächen mit Perl und Tk gibt es eine eigene Manpage. Ihr Aufruf lautet: man perl/Tk Eine weitere Informationsquelle ist das Demoprogramm widget. Dies zeigt mehrere Beispiele für Widgets und die zugehörigen Quelltexte für Perl/Tk.



« Kontrollelemente | Grafische Oberfläche: Tk | Informationsquellen »
 
 Zum Katalog
Zum Katalog
Wie werde ich UNIX-Guru?
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 UNIX/Linux

PHP 4-Workshop

Einstieg in Python

Perl fürs Web

MySQL 4

GNOME 2.0
 Empfehlung

Einstieg in XML
 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info

 MyGalileo
Der Service für registrierte Leser:
Zu MyGalileo
Info



Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de