Schrift
[thread]11827[/thread]

nicht-blockierende callback-Subroutine (Tk)

Leser: 3


<< >> 2 Einträge, 1 Seite
FoolAck
 2008-05-18 15:35
#109875 #109875
User since
2008-05-02
69 Artikel
BenutzerIn
[default_avatar]
Hi!

Folgendes Beispiel:
Code: (dl )
perl -MTk -e 'MainWindow->new->Button(-command => sub {sleep 10})->pack; MainLoop'

"blockiert" ja immer solange, wie die subroutine wartet. Gibt es eine (einfache) Möglichkeit eine callback-Funktion "non-blocking" zu implementieren? Muss das über threads oder so gehen? (Kenn mich da nicht so aus.)

Ich hab schon von $mw->update() gehört und das klingt eigentlich ziemlich perfekt, aber das könnte ich maximal alle 3-4 Sekunden oder so in der Callback-Funktion aufrufen. Deswegen frag ich hier mal, obs da nicht vielleicht etwas "noch einfacheres" gibt?
So gehts btw scheinbar nicht: (die callback-Funktion blockiert wohl auch repeat..)
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
use Tk;

my $mw = MainWindow->new();

sub bar {my $mw = shift; $mw->update()}
$mw->repeat(200, [\&bar, $mw]);

$mw->Button(-text => "zZzZz", -command => sub {sleep 10})->pack();

MainLoop();
Während wenn ich $mw->update in der callback-sub direkt aufrufe gehts natürlich, aber wie gesagt, da ist die Auflösung etwas, hm, grob.

ps: {sleep 10} ist natürlich nur ein Platzhalter für die eigentliche (zeitintensive) subroutine.
pktm
 2008-05-18 15:49
#109877 #109877
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ach, für sowas nehm ich einfach immer POE. Auf deren Webseite gbt es ein nettes Sniplet, wo ein Tk-Fenster erzeugt wird. Das kannst du nehmen und anpassen.
http://www.intergastro-service.de (mein erstes CMS :) )
<< >> 2 Einträge, 1 Seite



View all threads created 2008-05-18 15:35.