Thread Tk und POE: Querulanten-POE in Tk einsetzen (11 answers)
Opened by Froschpopo at 2005-04-06 16:11

Dubu
 2005-04-06 17:03
#43351 #43351
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=Froschpopo,06.04.2005, 14:51]das is ja irgendwie ein Logik-Fehler:
Wenn create als letzten Schritt _start aufruft, muss $text ja schon definiert sein, sonst wäre das ja nicht der letzte schritt.

habs zur übersicht etwas vereinfacht
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#! /usr/bin/perl -w


use Tk;
use POE qw(Session);

my $main = MainWindow->new(
    -background => 'white',
    -title => "Ein kleiner test"
);

POE::Session->create( 'inline_states' =>
      { '_start' => \&test

      },
         'args' => [ "hi" ],
);

sub test {
    for (1..5) {
        conf($_);
        sleep(1);
    }
}

POE::Kernel->run();

sub conf {
    $main->configure(-title => $_[0]);
}
MainLoop;
[/quote]
Und das funktioniert genau so, wie du es geschrieben hast:
Mit MainWindow->new() legst du ein MainWindow an (das damit ja noch nicht sichtbar ist).
POE::Session->create() legt eine POE::Session an, fuehrt dabei als letzten eigenen Schritt die Funktion in _start aus, also test().
Dieses test() aendert nun fuenfmal hintereinander den Titel des MainWindow (das immer noch nicht sichtbar ist) und legt jeweils das ganze Programm fuer eine Sekunde schlagen.
Wenn test() fertig ist, ist auch POE::Session->create() fertig, und das Programm laeuft weiter zum POE::Kernel->run(), fuer den es jetzt nichts weiter zu tun gibt, als eine Art Tk::MainLoop auszufuehren. Damit sieht man jetzt endlich das Fenster mit dem Titel "5".

View full thread Tk und POE: Querulanten-POE in Tk einsetzen