Thread Fenster schließen: Ein aufgerufenes Fenster wieder schließe (4 answers)
Opened by Olav_888 at 2004-05-04 17:15

ptk
 2004-05-04 18:44
#42064 #42064
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Du solltest immer angeben, welches GUI-Toolkit du benutzt. Ich antworte einfach mal fuer Tk. Wenn du ein Fenster mit
Code (perl): (dl )
$toplevel = $mainwindow->Toplevel
erzeugt hast, dann kannst du mit
Code (perl): (dl )
$toplevel->destroy
das Fenster wieder schliessen. Wenn du dir nicht sicher bist, dass das Fenster in der Zwischenzeit bereits geschlossen wurden, kann man
Code (perl): (dl )
$toplevel->destroy if Tk::Exists($toplevel)
schreiben.

Du kannst Widgets ausblenden, indem du die "forget"-Form des verwendeten Geometry-Managers verwendest. Also bei Verwendung von pack ist es packForget, bei grid ist es gridForget etc. Mit pack/grid/... kann man das Widget wieder sichtbar machen. Evtl. muss man die Position dann genau angeben --- in diesem Fall ist die Arbeit mit grid einfacher. Das Arbeiten mit forget hat den Nachteil, dass das Hauptfenster die Groesse anpasst --- das moechtest du wahrscheinlich nicht. Du kannst dafuer die Geometry-Propagation ausschalten ($toplevel->packPropagate(0)) oder eine feste Fenstergroesse angeben (evtl. reicht ein geometry-Aufrufen, evtl. muss aber auch minsize/maxsize/resizable gesetzte werden).

Eine andere Moeglichkeit ist, ein anderes Widget ueber ein existierendes zu legen. Das kann man mit place relativ elegant machen:
Code (perl): (dl )
1
2
$widget = $toplevel->Label(...)->pack;
$widget_drueber = $widget->Label(...)->place(-x => 0, -y => 0, -relwidth => 1, -relheight => 1);

View full thread Fenster schließen: Ein aufgerufenes Fenster wieder schließe