Hallo,
ich will folgendes in Tk umsetzen:
Ich habe einen Button der eine Progressbar loslaufen lässt, nach dem drücken auf den Button soll dieser deativiert werden, ist die Progressbar fertig soll er wieder aktiviert werden.
Jetzt ist mein Problem der -command - parameter. Dort müsste ich eine sub aufrufen die den button referenziert, obwohl der Button noch gar nicht erzeugt wurde.
Mache ich das nach der Erzeugung des Buttons per configure( -command => subaufruf) läuft die funktion sofort los, danach passiert nix mehr wenn man nochmal auf den Button drückt.
Hier mal der Code:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/perl
use Tk;
use Tk::ProgressBar;
use Time::HiRes;
#use warnings;
#use strict;
my $mw = MainWindow->new(-title => 'ProgressBar example');
$mw->configure(-width=>200, -height=>80);
$mw->packPropagate(0); # jetzt wird auf die grösse gepackt
my $progress = $mw->ProgressBar(
-relief => 'sunken',
-borderwidth => 2,
-width => 24,
-from => 0,
-to => 100,
-blocks => 20,
-colors => [ 0, 'green',
50, 'yellow',
80, 'red'],
-variable => \$percent_done
)->pack(-fill => 'x', -padx=> 4, -pady=>4);
sub go {
$_[0]->configure( -state => 'disabled');
for ($i = 0; $i < 1000; $i++) {
$percent_done = $i/10;
print "$i\n";
#Time::HiRes::sleep(0.3);
$mw->update;
}
$_[0]->configure( -state => 'active');
}
$b = $mw->Button(
-text => 'Go!',
-width => 20
#-command => &go($b) # hier bräuchte ich eine referenz auf den Button
)->pack(-side => 'bottom', -pady=>4, -padx=>4);
$b->configure( -command => go($b) ); # läuft sofort los
MainLoop;
Last edited: 2012-02-25 19:53:56 +0100 (CET)