IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques Perl Discussion :

module Tkx::ProgressBar utilisation


Sujet :

Interfaces Graphiques Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 19
    Points : 13
    Points
    13
    Par défaut module Tkx::ProgressBar utilisation
    Bonjour,
    Je suis en train de finir un petit script perl avec Tkx, qui me semble assez souple.
    J'ai un pb. dans l'utilisation de la méthode start telle qu'elle est présentée dans le tkdoc( http://www.tkdocs.com/tutorial/morew...ml#progressbar )
    pour la partie suivante :

    "Indeterminate Progress

    Indeterminate mode is for when you're not able to easily know (or estimate) how far along in a long running task you actually are, but still want to provide feedback to the user that the operation is still running (or that your program hasn't crashed). Rather than providing specific values to indicate progress along the way, at the start of the operation you'll just call the progressbar's "start" method, and at the end of the operation, you'll call its "stop" method. The progressbar will take care of the rest. "

    Ma question : Comment appelle-t-on la méthode start et la méthode stop ?
    Chez moi, pas de réponse... si quelqu'un peut éventuellemnt faire un exemple, ce serait bienvenu.
    En fait, je veux parcourir récursivement un répertoire ( merci Djibril ), et on ne connait évidemment pas le temps que cela va prendre. Dont acte !
    Par avance merci, Emmanuel.

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Je ne pratique pas tkx malheureusement, mais si tu avais un début de script, je pourrais jeter un coup d'œil.
    Néanmoins, la logique est la même que tk ou autre. Pour faire une barre de progression, t'a besoin d'avoir l'information de fin, c'est à dire, le nombre de fichiers total à parcourir histoire de savoir où t'en est. Ou à la rigueur, la taille total du répertoire à parcourir. Mais pour cela, il faudrait déjà le parcourir . donc est ce judicieux ? Un programme comme du te permettrait de calculer cela aussi, mais bon, ça peut être long.
    Voilà, sinon j'avais rédigé un article sur les barres de progression en Perl Tk, tu peux y jeter un coup d'œil. Ça peut te donner des idées.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 19
    Points : 13
    Points
    13
    Par défaut
    J'ai fini par trouver mon erreur, en fait je n'avais pas utilisé le moindre rafraichissement de la fenetre, ce qui fait que bien évidemment, rien n'était visible !
    Je poste une petite solution, si ça intéresse quelqu'un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    use Tkx;
    #======================================================
    # Création de la fenetre 
    my $mw = Tkx::widget->new(".");
    	$mw->g_wm_minsize(500, 400); # Taille minimum de la fenetre
    #======================================================
    # On lui ajoute une listeBox
    # que l'on positionne sur la deuxième ligne/première case du grid, à savoir la 0 1
    ($lb = $mw->new_tk__listbox(-height => 5))->g_grid(-column => 0, -row => 1, -sticky => "nwes");
    #======================================================
    # A la listeBox, on ajoute la propriéte de pouvoir etre scrollée
    # la position choisie est la deuxième colonne ( c'est a dire a droite de la listeBox
    ($s = $mw->new_ttk__scrollbar(-command => [$lb, "yview"], 
            -orient => "vertical"))->g_grid(-column =>1, -row => 1, -sticky => "ns");
     
    $lb->configure(-yscrollcommand => [$s, "set"]);
    #======================================================
    # Lorsque qu'on modifie la taille de la fenetre, on veut que la scrollbar de la listeBox 
    # soit modifiée
    ($mw->new_ttk__sizegrip)->g_grid(-column => 1, -row => 2, -sticky => "se");
    $mw->g_grid_columnconfigure(0, -weight => 1); $mw->g_grid_rowconfigure(1, -weight => 1);
    #======================================================		
    # Choix du répertoire et filtre
     $dirname = Tkx::tk___chooseDirectory();
     #======================================================
    # Création d'un label qui contient le nom du répertoire à explorer
    ($mw->new_ttk__label(-text => "$dirname", 
            -anchor => "w"))->g_grid(-column => 0, -row => 0, -sticky => "we");
    # Tkx::update();
    # On écrase le label du bas pour y insérer le suivi
    ($mw->new_ttk__label(-text => "En cours...", 
            -anchor => "w"))->g_grid(-column => 0, -row => 2, -sticky => "we");
    # Pour rafraîchir l'affichage ( en particulier pour les affichages des labels )
    		Tkx::update();
     
    # Progress bar		
    $pgb = $mw->new_ttk__progressbar(-orient => 'horizontal', -length => 200,
    		-mode => 'determinate');
    $pgb->g_grid(-column => 0, -row => 3, -sticky => "we");		
    $pgb->start();# appel de la méthode start
    Tkx::update();# il faut rafraichir
     
     my $Repertoire = $dirname;
     my @LesFichiers = ListersFichiers($Repertoire);
     # On filtre la liste des fichiers
    my $extension = "txt";
    my @ListeFiltre;
    #======================================================
    foreach $nomfichier (@LesFichiers) {
      $ext = substr($nomfichier,length($nomfichier)-3,3); 
      # Comptage des fichiers du type choisi
      if ( $ext eq $extension ) {
    		push ( @ListeFiltre, "$nomfichier" );	
    	}
      }
    #======================================================
    # On ajoute chaque element dans la liste Box
    my $c2 = 0;
    foreach $nomfichiertri (@ListeFiltre) {
    	$lb->insert("end", "$nomfichiertri");
      }
    #====================================================== 
    ($mw->new_ttk__label(-text => "Fini.", 
            -anchor => "w"))->g_grid(-column => 0, -row => 2, -sticky => "we");
     $pgb->stop();	
    Tkx::MainLoop();
    exit;
    #======================================================
    #======================================================
    # Procédure qui permet de parcourir tous les sous répertoires
    # d'un répertoire donné
    # Nombre d'arguments : 1
    # Argument(s)        : un répertoire ($repertoire)
    # Retourne           : Tableau de fichier (@fichiers)
    #======================================================
    sub ListersFichiers {
      my ( $repertoire ) = @_;
      my @fichiers;
      # Ouverture d'un répertoire
      opendir (my $FhRep, $repertoire) 
        or die "impossible d'ouvrir le répertoire $repertoire\n";
      # Liste fichiers et répertoires sauf (. et ..)
      my @Contenu = grep { !/^\.\.?$/ } readdir($FhRep);
      # Fermeture du répertoire
      closedir ($FhRep);
      # On récupère tous les fichiers
      foreach my $nom ( @Contenu ) {
       Tkx::update(); # pour rafraichir la progressbar
        # Fichiers
        if ( -f "$repertoire/$nom") {	
    		push ( @fichiers, "$repertoire/$nom" );	
        }
        # Repertoires
        elsif ( -d "$repertoire/$nom") {
          # recursivité pour parcourir les sous-répertoires
          push ( @fichiers, ListersFichiers("$repertoire/$nom") );
        }
      } 
      return @fichiers;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [V8] module personnalisé qui utilise base_calendar
    Par Ziza123 dans le forum Odoo (ex-OpenERP)
    Réponses: 0
    Dernier message: 18/09/2014, 17h11
  2. [VBA] Plusieurs modules : But et utilisations ?
    Par NiKoTiNe dans le forum VBA Access
    Réponses: 5
    Dernier message: 23/05/2007, 16h18
  3. Module Threading, utilisation timer(x,y) .
    Par aladin46 dans le forum Général Python
    Réponses: 3
    Dernier message: 02/01/2005, 18h55
  4. utilisation d'une ProgressBar
    Par knittel02 dans le forum C++Builder
    Réponses: 1
    Dernier message: 25/12/2004, 23h04
  5. [C#] Utilisation d'une ProgressBar pour un téléchargement
    Par snoof dans le forum Windows Forms
    Réponses: 10
    Dernier message: 04/10/2004, 19h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo