Schrift
[thread]5011[/thread]

Tk::ProgressBar... bestes vorgehen?

Leser: 1


<< |< 1 2 >| >> 12 Einträge, 2 Seiten
zipster
 2005-05-11 18:39
#44010 #44010
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Hi,

ich würde gerne in meinem Progrämmchen Tk::ProgressBar verwenden. Meine Frage ist nun aber wie gehe ich da am besten vor? Wie setzte ich am besten Eventpoints usw....

Über Tips und Codeschnippsel würde ich mich sehr freuen. ;)


Bis dann
Seri alias Zipster
Crian
 2005-05-11 20:23
#44011 #44011
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Schau doch mal in die widget / widget.bat. Wenn Dir das nicht reicht, beschreib mal genauer, was Du machen willst.

Und denk' an die Lizenzgebühren an IBM ;)


hier sind ein paar Schnippel aus einem Programm von mir, das die Progressbar verwendet:

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
    #--------------------------------------------------------------------------
# Fortschrittsbalken:
#--------------------------------------------------------------------------
my $fb_f = $mw->LabFrame(-label => 'Fortschrittsanzeige',
-labelside => 'acrosstop',
);
my $fsb = $fb_f->ProgressBar(
-length => 200,
-width => 13,
-anchor => 'w',
-from => 0,
-to => 100,
-blocks => 10,
-gap => 0,
-colors => [
00 => '#0000FF',
10 => '#1C00FF',
20 => '#3800FF',
30 => '#5500FF',
40 => '#7100FF',
50 => '#8D00FF',
60 => '#AA00FF',
70 => '#C600FF',
80 => '#E200FF',
90 => '#FF00FF',
],
-value => 0,
)
->pack(-side => 'top',
-expand => 1,
-fill => 'x',
);
$Konfig{fsb} = $fsb;


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
sub user_informieren ($) {
#--------------------------------------------------------------------------
# sub : u s e r _ i n f o r m i e r e n
#--------------------------------------------------------------------------
# Autor : CD
# Aufgabe : Informiert den User über den Fortschritt des Programms.
# Dies erfolgt in Form der Anpassung des Fortschrittbalkens.
# Parameter : Anzahl Zeichen in der aktuellen Zeile.
# Rückgabewert : keiner
#--------------------------------------------------------------------------
# 0.0.1 - 21.04.2004 - CD - Erstellt
#--------------------------------------------------------------------------

$Konfig{accsize} += 1 + shift; # + 1 für das 2. Zeichen des Zeilenumbruchs

if ($Konfig{gui}) {
$Konfig{mw}->Unbusy();
$Konfig{fsb}->value(int (100 * $Konfig{accsize} / $Konfig{maxsize}));
$Konfig{mw}->update();
$Konfig{mw}->Busy();
}
else {
local $| = 1;
if ( $Konfig{accsize} / $Konfig{maxsize} >= $Konfig{accperc} ) {
print '#';
$Konfig{accperc} += 0.0125;
print "\n\n" if $Konfig{accsize} == $Konfig{maxsize};
}
}

} # sub user_informieren


(Den else-Zweig kannst Du ignoprieren, der ist für den poor mans progressbar, falls das Tool ohne Tk-Oberfläche läuft.)

Code: (dl )
$Konfig{maxsize} = -s $Konfig{quelle};



Code: (dl )
1
2
3
4
5
6
7
    #--------------------------------------------------------------------------
# Eingabedatei bearbeiten:
#--------------------------------------------------------------------------
while (<IN>) {
user_informieren(length);
...
}


Das Programm liest im wesentlichen eine Datei. Der Fortschrittsbalken geht über deren Länge in Byte (oder Zeichen).

Nützt Dir das was?

Dass ich das so gelöst habe, heißt aber noch nicht, dass das die beste Lösung ist. Aber es funktioniert in meinem Fall zufriedenstellend.\n\n

<!--EDIT|Crian|1115829045-->
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
zipster
 2005-05-12 09:33
#44012 #44012
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Ich möchte das für mein Progrämmchen nutzten.
Wenn ein PDF aufgemacht wird und mit Ghostscript als Jpg umgewandelt wird, möchte ich den Fortschritt in einem Progressbar darstellen lassen, so das der User erkennt Ok er hat mittlerweile 3/4 oder so....

Ich werde mir mal deine Beispiele anschauen. Mal sehen was ich erreiche. ;)\n\n

<!--EDIT|zipster|1115876076-->
Thorium
 2005-05-12 11:01
#44013 #44013
User since
2003-08-04
232 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ich denke was du willst, kannst du so nicht machen.
Da du (anscheinend) einen externen Prozess startest hast du keine Möglichkeit festzustellen wie weit der Fortschritt der Umwandlung schon fortgeschritten ist. Ghostscript müsste dir irgendwie jeweils melden wie weit die Umwandlung schon vorangeschritten ist - das macht es aber nicht, wenn ich mich recht erinnern kann.
Per|li|nist der; -en, -en <zu ↑...ist>: a) Anhänger, Vertreter der radikalen Perlinisten die Perl als die einzig wahre Sprache ansehen; b) Mitglied einer perlinistischen Community.
ptk
 2005-05-12 12:42
#44014 #44014
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Man koennte einen anderen Typ von Progressbar nehmen, naemlich so einen, wo sich der Balken nur hin und her bewegt. Das macht man typischerweise, wenn man nicht weiss, wann das Ende ist oder wie weit der Prozess ist.
zipster
 2005-05-12 12:45
#44015 #44015
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Ich dachte mir das so.

-Pdf-Datei auslesen wieviel Seiten bestehen.
-Verzeichniss für die Bilder leeren.
-Ghostscript starten und nebenher ne Verzeichniss überprüfung.
-Pro neues Bild läuft dann die ProgressBar ein Stück weiter. Bis Bilder == Seiten des Pdfs ist.

So müßte das doch umsetztbar sein oder? :D
zipster
 2005-05-12 12:47
#44016 #44016
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
[quote=ptk,12.05.2005, 10:42]Man koennte einen anderen Typ von Progressbar nehmen, naemlich so einen, wo sich der Balken nur hin und her bewegt. Das macht man typischerweise, wenn man nicht weiss, wann das Ende ist oder wie weit der Prozess ist.[/quote]
Du meinst so einen wie bei Windows XP Bootscreen benutzt wird oder?

Ja das wäre auch Ok(wobei mir eine richtig Progressbar besser gefallen würde)... kann man das auch mit Tk::Progressbar machen?
ptk
 2005-05-12 13:04
#44017 #44017
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=zipster,12.05.2005, 10:47][quote=ptk,12.05.2005, 10:42]Man koennte einen anderen Typ von Progressbar nehmen, naemlich so einen, wo sich der Balken nur hin und her bewegt. Das macht man typischerweise, wenn man nicht weiss, wann das Ende ist oder wie weit der Prozess ist.[/quote]
Du meinst so einen wie bei Windows XP Bootscreen benutzt wird oder?
[/quote]Keine Ahnung, ich kenne Windows nicht. Mein Nokia-Handy kann das, und gesehen habe ich das auch bei Netscape oder Mozilla.

Quote
Ja das wäre auch Ok(wobei mir eine richtig Progressbar besser gefallen würde)... kann man das auch mit Tk::Progressbar machen?

Ich glaube nicht --- ich habe ein eigenes Widget dafuer geschrieben (nicht auf CPAN).
zipster
 2005-05-12 13:14
#44018 #44018
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Quote
Ich glaube nicht --- ich habe ein eigenes Widget dafuer geschrieben (nicht auf CPAN).

Würdest du mir dies zur Verfügung stellen *Hundeblick aufsetz*
Crian
 2005-05-12 15:36
#44019 #44019
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Die Variante mit der Überprüfung der Ergebnisdateien sollte aber auch gehen.

Zu Hin und Her: Setz doch den Wert der Progressbar in einer Funktion, die Du per repeat ausführen lässt, immer ein Stückchen weiter. Wenn man an einem Ende der Skala angelangt ist dreht man das Vorzeichen des zu addierenden Teilstücks halt um.
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
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2005-05-11 18:39.