Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Perl: Tod eines Handlungsfensters

  1. #1
    Registrierter Benutzer Avatar von Molaf
    Registriert seit
    15.11.2004
    Beiträge
    127

    Perl: Tod eines Handlungsfensters

    Hallo allerseits,

    ich möchte gerne mit Perl/Tk bei einer Fensteranwendung ein zusätzliches Fenster als Kontextmenu verwenden (Rahmen entfernen via overrideredirect, per attribute 'topmost' immer über Hauptfenster, usw.).

    Leider kann man das (Sub-)Fenster bei aktivem Fokus mit Alt+F4 abschiessen.
    Die Anwendung merkt aber nicht dass das zusätzliche Fenster weg ist.

    Ein kurzes Beispiel:
    Code:
    use strict;
    use warnings;
    
    use Tk;
    
    my $mw = MainWindow->new;
    my $tpl='';
    
    $mw->after(1000,\&mkToplevel);
    $mw->repeat(2000,\&ckToplevel);
    MainLoop;
    
    sub mkToplevel
    {
    $tpl = $mw->Toplevel();
    $tpl->attributes(-topmost=>1);
    }
    
    sub ckToplevel
    {# hier möchte ich nun irgendwie feststellen, ob das Toplevel noch lebt
    
    #leider kein Hinweis in der Zuordnung
    print $tpl,"\n";
    
    #Fehler wenn Toplevel weg ist
    $tpl->configure(-bg=>('green','red','blue')[rand 3]);
    }
    Einer Hauptanwendung könnte ich ja mit END{ ... } einen Codeblock mitgeben, der mich am Ende über eine Abschaltung informiert, bei dem Toplevel-Fenster fällt mir aber keine Möglichkeit ein und die geeignete Tk-Funktion kann ich nicht finden.

    Danke für eventuelle Hilfe,
    Molaf

  2. #2
    Registrierter Benutzer Avatar von Molaf
    Registriert seit
    15.11.2004
    Beiträge
    127
    Nicht in der Dokumentation sondern durch verzweifeltes Suchen im Internet habe ich noch diese Variante zutage gefördert:

    $widget->OnDestroy(callback);

    Code:
    sub mkToplevel
    {
    $tpl = $mw->Toplevel();
    $tpl->attributes(-topmost=>1);
    $tpl->OnDestroy(\&Aua);
    }
    
    sub Aua
    {
    print "kapoot\n";	
    }
    Sieht nicht so elegant aus, funktioniert aber. Wenn noch jemand weiß, wie es ordentlicher ginge, wäre ich natürlich dankbar.

  3. #3
    Registrierter Benutzer Avatar von jeebee
    Registriert seit
    01.01.2005
    Ort
    Bern || Zürich
    Beiträge
    540
    Ist doch genau so wie's gedacht ist: Wenn ein widget abgebaut wird, kann man über OnDestroy bookkeeping machen.
    my very own 128 bit integer
    C4 D3 B8 A8 9E A0 C6 EC 7D EC A8 15 28 D1 92 58
    more information

  4. #4
    Registrierter Benutzer Avatar von Molaf
    Registriert seit
    15.11.2004
    Beiträge
    127
    Naja, stimmt auch wieder.
    Irgendwie hatte ich eine Methode beim Handle des Hauptfensters vermutet, der hat das Zusatzfenster ja auch erstellt.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •