Schrift
[thread]4662[/thread]

Toplevel: Toplevel überschreiben



<< >> 5 Einträge, 1 Seite
schnuffi
 2003-09-29 18:51
#44344 #44344
User since
2003-09-26
17 Artikel
BenutzerIn
[default_avatar]
mein problem ist es, dass ich auf knopfdruck ein neues fenster erstellen lasse, welches die aktuellen einstellungen zeigt! wie kann ich bewirken dass wenn man erneut auf den knopf drückt das erste fenster übschrieben wird bzw geschlossen wird anstelle ein weiteres fenster zu öffnen???

hier mein versuch der leider nicht klappt:
[QUOTE]
...
sub zeige_status{
   
   
if (Exists($statusfenster)){
   ([$statusfenster => "destroy"]);
   }else{
   my $statusfenster=$gui->Toplevel(-width => 400,
                                    -height => 200);
   $statusfenster->title("Status");
   $statusfenster->Label (-text => "Statusfenster")->pack;
   $statusfenster->Button (-text=> "close",
                           -command => [$statusfenster => "destroy"])->pack(-pady=>5
                                                                           );
...
eisbeer
 2003-09-29 20:18
#44345 #44345
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
Code: (dl )
1
2
3
4
5
6
7
unless ($FLG{'Toplevel'}) {
$FLG{'Toplevel'} = 1;
}
else {
$TopLevel->focus if ($Toplevel);
return 0;
}


in %FLG sind alle deine Toplevels gespeichert,
du musst nur aufpassen, das du $FLG{'xyz'}
wieder auf undef/0 setzt wenn du dein Fenster
schliesst, sonst kannst es nämlich net öffnen :)
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
schnuffi
 2003-09-30 11:47
#44346 #44346
User since
2003-09-26
17 Artikel
BenutzerIn
[default_avatar]
funtioniert leider immernoch nicht wie gewünscht. somit öffnet sich auf weitere "knopfdrücke" zwar keine weiteren fenster, aber ich muss das fenster erst schließen, bevor ich das aktualisierte öffnen kann.
gewünschte funktion soll eigentlich sein: dass wenn ich ein zweites mal auf den "knopf" drücke , sich das erste fenster schließt und das gleiche fenster - nur aktualisiert!!!!- wieder öffnet.

mein versuch derzeit:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
...
sub zeige_status{

if (! Exists($statusfenster)){
$statusfenster=$gui->Toplevel(-width => 400,
-height => 200);
$statusfenster->title("Status");
$statusfenster->Label (-text => "Statusfenster")->pack;
$statusfenster->Button (-text=> "close",
-command => [$statusfenster => "destroy"])->pack(-pady=>5
);
...

}else{

$statusfenster->deiconify();
$statusfenster->raise();
}


was genau die zwei zeilen in else bedeuten weiß ich selbst noch net. aber eigentlich bräuchte ich jetzt für die else schleife doch nur den genauen "destroy-befehl" zum schließen des fensters und müsste dieses dann einfach wieder öffnen lassen , oder?????
schnuffi
 2003-09-30 13:13
#44347 #44347
User since
2003-09-26
17 Artikel
BenutzerIn
[default_avatar]
der befehl ist ja doch

$statusfenster->destroy();
:D warum des eben net geklappt hat??? naja jetzt funzt es!
trotzdem mercy!
Strat
 2003-09-30 15:17
#44348 #44348
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
die beiden zeilen im else bedeuten, wenn es das fenster schon gibt, dann soll es angezeigt werden. Dies ist vor allem sinnvoll, wenn man ein Fenster oefter braucht, und nur die Anzeige unterdrueckt werden soll (mit ->withdraw). Der if-Zweig erzeugt das neue Fenster nur, wenn es noch nicht vorhanden ist (! Exists)...
Wenn man das Fenster immer mit destroy zerstoert, braucht man eigentlich nur den Inhalt des if-Blocks; aber sicherer ist die oben gezeigte Version, weil es sowohl einen eventuellen vorherigen destroy (if-Zweig) als auch ein withdraw (else-Zweig) handeln kann...\n\n

<!--EDIT|Strat|1064920732-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< >> 5 Einträge, 1 Seite



View all threads created 2003-09-29 18:51.