Hallo, Am Thu, 10 Nov 2005, Juergen Sachs schrieb:
Ah jetzt ja, hide gleich geschlossen. Jetzt wird einiges klarer. Ich ging von deleted = geschlossen aus.
Weder noch (oder zumindest sehr missverstaendlich formuliert). "hide" == versteckt -> Fenster ist nur "unsichtbar" "deleted" == geloescht -> Fenster existiert nicht mehr Ist ein Fenster "hidden", dann existiert es genauso wie zuvor (auch ohne "show" o.ae.), es koennen dessen Inhalte nach wie vor manipuliert werden, es wird _NUR_ nicht dargestellt. Ist es "deleted", ist es weg (oder sollte es zumindest sein). Termina koennen je nach Toolkit variieren. Beispiel: $ perl -e 'use Tk; use Data::Dumper; my $mw = new MainWindow(); $mw->Button( -text => "Hide", -command => sub { $mw->UnmapWindow(); print Dumper($mw); sleep 5; $mw->MapWindow(); print Dumper($mw); } )->pack; $mw->Button( -text => "Quit", -command => sub { $mw->destroy(); print Dumper($mw); } )->pack; Tk::MainLoop;' Das eigentliche "MainWindow" (das nach dem destroy noch uebrig ist) wird erst spaeter von perl/Tk abgeraeumt... Das Beispiel zeigt aber den Unterschied zwischen show()/hide() (hier MapWindow() / UnmapWindow()) und "new()/delete()" (hier new() / destroy())... Zu beachten ist noch, dass Tk::MainLoop[1] bzw. perl selbst noch diverses erzeugt und wieder aufraeumt usw. was bei anderen Toolkits und Programmiersprachen ggfs. per Hand zu erledigen ist (u.a. ist das saubere Beenden nach dem "destroy()" des Tk::MainWindow implizit, das script geht aber nach dem "MainLoop" noch weiter, vgl. [2]). -dnh [1] das auch ohne das 'Tk::' geschrieben werden kann, da von Tk exportiert [2] Fuege nach dem MainLoop noch ein 'exit 42;' ein und vergleiche per 'echo $?' den exitstatus des perlscriptes mit und ohne das 'exit 42;' am Ende... # ... Tk::MainLoop; exit 42;' -- "Wer nicht merkt das er Merkbefreit ist, dem sollte man eine Merkbefreiung für's Leben verpassen. D.B.D.D.H.K.P. Das macht Spass und tut nicht weh." [WoKo in dag°]