Re: mehrere Fenster und exec()

David Haller <[email protected]>
Newsgroups gmane.linux.suse.programming
Message-ID <[email protected]>
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°]

-- 
Um die Liste abzubestellen, schicken Sie eine Mail an:
    [email protected]
Um eine Liste aller verfÃŒgbaren Kommandos zu bekommen, schicken
Sie eine Mail an: [email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.