Thread Button (9 answers)
Opened by Gast at 2003-11-17 09:00

coax
 2003-11-17 14:34
#45112 #45112
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
Hallo Helmut,

die Tk-Anwendung laeuft selbst in einer Loop in der alle Ereignisse behandelt werden, wuerdest du also nach Knopfdruck eine Subroutine aufrufen in der eine Endlosschleife etwas abarbeitet, kann die Tk-Anwendung auf nichts mehr reagieren, nur die Endlosschleife arbeitet weiter.
Jedes weitere Ereignis (hier ButtonRelease) kann von Tk dann nicht mehr wahrgenommen werden, das Programm kann also nicht weiter kontrolliert werden.
Da Tk eh schon in einer Schleife laeuft wuerde ich die nutzen und Anweisung mittels repeat ausfuehren.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl

use Tk;
use strict;
use warnings;

my $mw = new MainWindow;

my $b = $mw->Button(-text => 'Run')->pack();

my $id;
my $i;
$b->bind('<ButtonPress-1>' => sub { $id = $mw->repeat(0, sub {print ++$i}) } );
$b->bind('<ButtonRelease-1>' => sub { $id->cancel() } );

MainLoop();


Gruß coax.
,,Das perlt aber heute wieder...'' -- Dittsche

View full thread Button