[python-de] Neu

Markus Fleck fleck at informatik.uni-bonn.de
Wed Oct 21 19:47:31 EDT 1998


Thomas Levy wrote:
Status: RO

> ich bin seit 2 Stunden neu in dieser Liste.
> Bisher kamen zwar noch keine Mails an, aber ich denke mal, um die Zeit
> arbeiten wahrscheinlich die meisten noch nicht...

Willkommen!

Der Traffic auf der Liste war in letzter Zeit eher gering; aber es sieht
so aus, als koennte sie doch wieder zum Leben erweckt werden.... :-)

> Wir brauchen eine Flaeche von Buttons, Entryfields und anderem Zeugs.
> Die ist aber so gross, dass sie trotz unserer 21"-Monitore nicht auf den
> Bildschirm passt, ein Zerteilen in einzelne Fenster ist nicht sinnvoll
> moeglich.

Das mag sich nach Besserwisserei anhoeren, aber meist ist es durchaus
moeglich, ein grosses Dialogfeld (z.B. mit Hilfe von Reitern/Pmw) logisch
zu zerlegen. Und spaetestens dann, wenn zu einer ansonsten prallvollen
Bildschirmmaske spaeter noch etwas dazugefuegt werden soll (was nicht
selten auch "mal eben schnell" moeglich sein muss), ist es sehr hilfreich,
wenn man die Maske etwas "modularer" aufgebaut hat. (Es kann insbesondere
auch sinnvoll sein, eine Maskenbeschreibung nicht "hart" einzuprogrammieren,
sondern in eine Beschreibungs-Datei auszulagern oder zumindest wieder-
kehrende Teile dynamisch zu erzeugen.)

(Wenn das alles bekannt war, und fuer das konkrete Problem nicht
weiterhilft, bitte ich um Nachsicht. Ich hatte ja nur die besten
Absichten. :-)

> Wir wollten das ganze also in ein scrollbares Canvas packen, was uns
> auch gleich gestern den ganzen Nachmittag gekostet hat...
> 
> Und zwar fragen wir uns, wie wir die Hoehe des Canvas, also die
> Scrollbare Region bestimmen.

Das ist ziemlich schwierig. Die Groesse der Widgets ist i.d.R. erst *nach*
dem "Mapping", also der Darstellung auf dem Bildschirm, bekannt. Ausserdem
muss man, wenn man das ganze imperativ programmieren moechte, explizit ein
Tk-"update" aufrufen, weil das Mapping ansonsten evtl. erst beim Eintritt
in die Idle-Schleife wirklich durchgefuehrt wird.

Evtl. eignet sich auch das "text"-Widget, in dem man auch Widgets einbetten
kann - aehnlich wie beim Canvas ruckelt das natuerlich auch ziemlich beim
Scrollen. Beim "text"-Widget werden eingebettete Widgets wie beim Zeilen-
umbruch des Textes mit umgebrochen. Das Scrolling ist nur zeilenweise
moeglich; d.h., es ist hier nicht sinnvoll, die ganze Maske als riesigen
Frame ins Text-Widget zu packen (weil man dann nicht mehr scrollen kann),
sondern man sollte die Widgets moeglichst "zeilenweise" in das Text-Widget
einfuegen. Natuerlich kann man auch mehrere Text-Widgets verwenden. Dieses
Vorgehen hat den Vorteil, dass man sich nicht um die Zahl der tatsaechlichen
"Zeilen" kuemmern muss, sondern nur Platz fuer den sichtbaren Ausschnitt
der "Textzeilen" im Dialog vorsehen muss.

Aber, wie gesagt, meist ist es durchaus moeglich, die Dialogelemente anders
(=platzsparender) anzuordnen, z.B. indem man Reiter verwendet, oder Buttons
in Pull-Down-Menues auslagert (wobei das Menue nicht unbedingt am oberen
Rand des Fensters liegen muss - Menues koennen ueberall stehen). "Reiter"
("Tabbed Windows") kann man auch ganz gut "zu Fuss" mit einem Menue neben
einem Frame implementieren, in den man alle alternativen "Ansichten" (jeweils
nochmal in Frames eingepackt) ein- fuegt, wobei man aber nicht sofort "pack"
aufruft, sondern erst bei der Auswahl einer (Teil-)"Ansicht" durch das Menue.
(Die vorher aktive Ansicht muss dann jeweils mit "pack/forget" wieder
ausgeblendet werden.) Das Besondere dabei ist, dass trotz "forget" die
Widgets zwar ausgeblendet, aber ansonsten komplett erhalten bleiben (inkl.
Inhalten), und bei einem spaeteren "pack" einfach wieder angezeigt werden
koennen. (Ich hoffe, dass man das verstehen konnte. Ansonsten bitte ich
bei Interesse ggf. um Nachfrage per E-Mail.)

(Uebrigens beziehe ich meine Tk-Erfahrung aus der Arbeit mit Tcl/Tk;
mit Tkinter habe ich noch nicht viel gemacht. Die Funktionalitaet
sollte die gleiche sein, aber die genaue Tkinter-Syntax kenne ich
ohne Nachschauen nicht. [BTW ist "Das Python-Buch" (von Martin von
Loewis und Nils Fischbeck) dafuer, speziell auch was Tkinter angeht,
exzellent geeignet.])

Viele Gruesse,
Markus.

-- 
////////////////////////////////////////////////////////////////////////////
   Markus B Fleck - University of Bonn - CS Department IV - WHOIS MF5079
          UNIX Administrator - comp.lang.python.announce Moderator
   "GNU Gather" Free Internet Groupware Project - http://cscw.net/gather/
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\



__________________________________________________
Python-de Liste  -  python-de at starship.skyport.net
http://starship.skyport.net/mailman/listinfo/python-de




More information about the Python-de mailing list