Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5092[/thread]

Tk::ProgressBar

Leser: 3


<< |< 1 2 3 >| >> 28 Einträge, 3 Seiten
renee
 2005-09-28 15:40
#44654 #44654
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich möchte während ein Verzeichnis ausgelesen wird eine ProgressBar anzeigen. Das Widget wird jedoch erst angezeigt, nachdem das Verzeichnis komplett ausgelesen wird.

Was muss ich ändern, damit die ProgressBar von Anfang an angezeigt wird...

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
#!/usr/bin/perl

use strict;
use warnings;
use Tk;
use Tk::ProgressBar;

my $mw = tkinit;
my $btn = $mw->Button(-text => 'start...', -command => \&readdr)->pack();

MainLoop;

sub readdr{
my $top = $mw->Toplevel();
my $progress = $top->ProgressBar(-from => 0,
-to => 100,
-colors => [0,'green'],
-gap => 1)->pack();

opendir(DIR,'.') or die $!;
while(my $file = readdir(DIR)){
my $values = $progress->value();
$progress->value($values+2);
sleep(1);
}
closedir(DIR);
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Strat
 2005-09-28 16:17
#44655 #44655
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
fehlt da zufaellig irgendwo ein $mw->update oder $progress->update?
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
renee
 2005-09-28 16:20
#44656 #44656
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
jepp, vielen Dank!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Strat
 2005-09-28 16:22
#44657 #44657
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
wow! und das, obwohl ich die Progressbar noch nie ausprobiert habe...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
renee
 2005-09-28 16:37
#44658 #44658
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ist wirklich ganz nützlich. Ich muss mich jetzt wohl mal mit Tk::after oder so beschäftigen, weil ich die ProgressBar bei einem "atomaren" Prozess einsetzen will.

"atomar" deshalb, weil ich in dem Modul, das mir eine Datei parst nicht umschreiben möchte...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2005-09-28 16:43
#44659 #44659
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Ist nicht kompliziert ... schade, dass ich den F-Kurs nicht halten konnte :(
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
renee
 2005-09-28 17:05
#44660 #44660
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Dann kannst Du mir sicherlich erklären, warum das hier nicht funktioniert, oder?? ;)

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
#!/usr/bin/perl

use strict;
use warnings;
use Tk;
use Tk::ProgressBar;

my $mw = tkinit;
my $btn = $mw->Button(-text => 'start...', -command => \&readdr)->pack();

MainLoop;

sub readdr{
my $top = $mw->Toplevel();
# $mw->update();
my $progress = $top->ProgressBar(-from => 0, -to => 100, -colors => [0,'green'],
-gap => 1)->pack();
$progress->update();
my $id = $progress->repeat(2,sub{
my $values = $progress->value();
$progress->value($values+2);
$progress->update();
});
sleep(10);
$id->cancel();
}
\n\n

<!--EDIT|renee|1127914296-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Strat
 2005-09-28 17:11
#44661 #44661
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Problem mit dem sleep? Gab's da nicht mal ein Tk::sleep? oder bin ich gerade in der falschen schublade?
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
renee
 2005-09-28 17:23
#44662 #44662
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich habe aber das Problem, dass bei mir im Programm nicht sleep(10) steht, sondern ein my $obj = MyParser->new($file) und in dem Modul wird eine Datei geparst, was ziemlich lange dauert...\n\n

<!--EDIT|renee|1127914330-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Strat
 2005-09-28 17:48
#44663 #44663
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
wenn der Parser blockiert, dann kannst du auf konventionellem Wege nichts machen, ohne den code des parsers anzufassen (z.B. da update() aufrufen, oder die Mainloop auseinandernehmen und teile darin ausfuehren, bis wieder die normale MainLoop zur ausfuehrung kommt.

Unkonventionell: das parsen in einem thread erledigen lassen, den du startest, bevor perl irgendwas von Tk mitbekommt... also auch mit require Tk usw. arbeiten, das ergebnis des parsers ueber eine shared variable zurueckgeben (ev. muss das serialisiert geschehen) und eine weitere (oder mehrere) shared variable als semaphore verwenden, ueber die signalisiert wird, wenn der parser loslaufen darf bzw. wann er fertig ist, und die mit Tk-repeat ueberwacht wird... ist halt ein bisschen hakelig zu coden... aehnliches kann man sicher auch mit fork machen...\n\n

<!--EDIT|Strat|1127915369-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< |< 1 2 3 >| >> 28 Einträge, 3 Seiten



View all threads created 2005-09-28 15:40.