Thread Referenzen von Variablen Funktionen übergeben die noch nicht da sind. (7 answers)
Opened by unwichtig at 2012-02-25 19:49

Gast unwichtig
 2012-02-25 19:49
#156429 #156429
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:
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
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)

View full thread Referenzen von Variablen Funktionen übergeben die noch nicht da sind.