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 :

Afficher un retour de selection de fichiers


Sujet :

Interfaces Graphiques Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 15
    Points : 14
    Points
    14
    Par défaut Afficher un retour de selection de fichiers
    Bonjour,

    Je débute avec Perl Tk et j'utilise "getOpenFile" pour sélectionner plusieurs fichiers. En retour je souhaiterais avoir dans mon interface graphique la liste des fichiers que j'ai sélectionné.

    Avec le code ci dessous j'ai uniquement le dernier des fichiers sélectionné, ce qui me semble normal. Comment récupérer la liste des fiichiers ? (au cas ou je stocke la liste dans un fichier).

    Merci d'avance.

    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
    101
    102
    #!/usr/local/bin/perl
    use Tk;    #Utilisation de Tk
     
    #Définition fonction de fermeture de l'application
    sub Quitter {
      exit(0);
    }
     
    #Fonction de sélection d'un fichier
    sub SelectFile {
     
      # Get the file (.csv files)
      my @types = ( [ "Data Files", '.csv', 'TEXT' ], [ "All Files", "*" ] );
      my @TabFiles = $fen->getOpenFile(
        -initialdir => $ENV{AppliConfig}->{DefaultDirectory},
        -multiple   => 1,
        -filetypes  => \@types,
      );
      $filenb       = scalar(@TabFiles);
      $filenameOpen = 'Nb de Fichier(s) sélectionné(s) : ' . $filenb;
     
      open( OutFile, ">/home/colibri/toto.txt" );
      for ( $i = 0; $i < $filenb; $i++ ) {
        @list         = split( /\//, $TabFiles[$i] );
        $nbchamp      = scalar(@list) - 1;
        $filenameList = $list[$nbchamp];
        printf OutFile "$filenameList\n";
      }
      close(OutFile)
     
    }
     
    #Création de la fenêtre principale
    $fen = MainWindow->new();
     
    #Définition de la taille min de la fenêtre
    $fen->minsize( '500', '400' );
     
    #Définition du title de la fenêtre
    $fen->title("Interface Tk avec Perl");
     
    #Création de la barre de menu
    $barre_menu = $fen->Frame( -relief => 'groove', -borderwidth => 2 );
     
    #Création de la barre du menu général
    $menu_gen = $barre_menu->Menubutton(
      -text      => 'Application',
      -font      => '{Garamond} 10',
      -tearoff   => 0,
      -menuitems => [
        [ 'command' => 'Quitter',
          -font     => '{Garamond} 10',
          -command  => \&Quitter
        ]
      ]
    );
     
    #Affichage du menu général à gauche
    $menu_gen->pack( -side => 'left' );
     
    #Affichage de la barre de menu en haut de la fenêtre
    $barre_menu->pack( -side => 'top', -anchor => 'n', -fill => 'x' );
     
    #Ajout de notre bouton à la fenêtre
    $fen->Button(
      -text    => 'Sélectionner un fichier',    #Texte du bouton
      -font    => '{Garamond} 10',               #Nom et taille de la police utilisée
      -command => \&SelectFile                   #Action qui modifie notre variable
      )->pack(
      -pady  => '5',                             #Marge externe du bouton
      -padx  => '5',
      -ipady => '5',                             #Marge interne du bouton
      -ipadx => '5'
      );
     
    #Ajout du nb de fichier a ouvrir
    $filenameOpen = 'Nb de Fichier sélectionné : 0';
    $fen->Label(
      -relief       => 'groove',
      -textvariable => \$filenameOpen,
      -font         => '{Garamond} 10'
      )->pack(
      -fill => 'both',
      -padx => '5',
      -pady => '5'
      );
     
    #Ajout du nom du fichier a ouvrir
    $filenameList = 'Liste';
    my $lb = $fen->Label(
      -relief       => 'groove',
      -textvariable => \$filenameList,
      -font         => '{Garamond} 10'
    )->pack;
     
    #Création de notre barre de statut à l'aide d'un Label
    $barre_statut = $fen->Label( -relief => 'groove', -text => "Xxxx relevés", -font => '{Garamond} 10' );
     
    #On l'ajoute en bas de la fenêtre afin de lui donner l'effet barre de statut
    $barre_statut->pack( -side => 'bottom', -fill => 'both' );
     
    MainLoop;

  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 : 499 184
    Points
    499 184
    Par défaut
    Veuillez penser à indenter votre code et à le mettre sous balise code dans le forum pour une meilleure lisibilité la prochaine fois.

    De plus, pensez à utiliser les modules warnings et strict

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    use warnings;
    use strict;
    En ce qui concerne votre code, du moment où vous utilisez l'option
    -multiple => 1
    dans getOpenFile, @TabFiles contiendras la liste de tous les fichiers sélectionnés, donc je ne comprends pas votre souci.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Merci pour les conseils pour "use strict" et "use warnings".

    J'arrive à exploiter @TabFiles et à rediriger les différentes valeurs dans un fichier. Ce que je n'arrive pas à faire et ce que je souhaiterais c'est afficher cette liste de fichiers dans ma fenêtre graphique soit avec un "Label" soit avec une "Listbox" et que cet affichage se fasse après avoir fait ma sélection (évidemment).
    J'espère que ma question est claire maintenant.

    Merci d'avance.

  4. #4
    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 : 499 184
    Points
    499 184
    Par défaut
    Voici le code légérement modifié
    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
    101
    102
    #!/usr/bin/perl
    use warnings;
    use strict;
    use Tk;
    use utf8;
     
    #Création de la fenêtre principale
    my $fen = MainWindow->new();
     
    #Définition de la taille min de la fenêtre
    $fen->minsize( '600', '600' );
     
    #Définition du title de la fenêtre
    $fen->title("Interface Tk avec Perl");
     
    #Création de la barre de menu
    my $barre_menu = $fen->Frame( -relief => 'groove', -borderwidth => 2 );
     
    #Création de la barre du menu général
    my $menu_gen = $barre_menu->Menubutton(
      -text      => 'Application',
      -font      => '{Garamond} 10',
      -tearoff   => 0,
      -menuitems => [
        [ 'command' => 'Quitter',
          -font     => '{Garamond} 10',
          -command  => \&Quitter
        ]
      ]
    );
     
    #Affichage du menu général à gauche
    $menu_gen->pack( -side => 'left' );
     
    #Affichage de la barre de menu en haut de la fenêtre
    $barre_menu->pack( -side => 'top', -anchor => 'n', -fill => 'x' );
     
    my $widget_texte = $fen->Text()->pack(qw/ -fill both -expand 1/);
     
    #Ajout de notre bouton à la fenêtre
    $fen->Button(
      -text    => 'Sélectionner un fichier',         #Texte du bouton
      -font    => '{Garamond} 10',                    #Nom et taille de la police utilisée
      -command => [ \&SelectFile, $widget_texte ],    #Action qui modifie notre variable
      )->pack(
      -pady  => '5',                                  #Marge externe du bouton
      -padx  => '5',
      -ipady => '5',                                  #Marge interne du bouton
      -ipadx => '5'
      );
     
    #Ajout du nb de fichier a ouvrir
    my $filenameOpen = 'Nb de Fichier sélectionné : 0';
    $fen->Label(
      -relief       => 'groove',
      -textvariable => \$filenameOpen,
      -font         => '{Garamond} 10'
      )->pack(
      -fill => 'both',
      -padx => '5',
      -pady => '5'
      );
     
    #Création de notre barre de statut à l'aide d'un Label
    my $barre_statut = $fen->Label( -relief => 'groove', -text => "Xxxx relevés", -font => '{Garamond} 10' );
     
    #On l'ajoute en bas de la fenêtre afin de lui donner l'effet barre de statut
    $barre_statut->pack( -side => 'bottom', -fill => 'both' );
     
    MainLoop;
     
    #Définition fonction de fermeture de l'application
    sub Quitter {
      exit(0);
    }
     
    #Fonction de sélection d'un fichier
    sub SelectFile {
      my ($widget_texte) = @_;
     
      # Get the file (.csv files)
      my @types = ( [ "Data Files", '.csv', 'TEXT' ], [ "All Files", "*" ] );
      my @TabFiles = $fen->getOpenFile(
        -initialdir => $ENV{AppliConfig}->{DefaultDirectory},
        -multiple   => 1,
        -filetypes  => \@types,
      );
     
      my $filenb = scalar(@TabFiles);
      return if ( $filenb == 0 );
      $filenameOpen = 'Nb de Fichier(s) sélectionné(s) : ' . $filenb;
     
      my $fichier_output = "/home/colibri/toto.txt";
      open( OUTFILE, '>', $fichier_output ) or die("Impossible de créer le fichier $fichier_output\n");
      foreach my $fichier (@TabFiles) {
        $widget_texte->insert( 'end', "$fichier\n" );
        print OUTFILE "$fichier\n";
      }
      close(OUTFILE);
     
      return;
    }

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Parfait, c'est exactement ce que je souhaitais.

    Merci.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/11/2006, 12h56
  2. Mettre des retours chariot dans un fichier
    Par Isa31 dans le forum Langage
    Réponses: 8
    Dernier message: 02/03/2006, 16h13
  3. Problème retour chariot dans un fichier texte
    Par Redondo dans le forum Windows
    Réponses: 2
    Dernier message: 08/02/2006, 18h23
  4. afficher un retour à la ligne via un include
    Par harlock59 dans le forum Langage
    Réponses: 8
    Dernier message: 16/12/2005, 14h31
  5. Retour en début de fichier
    Par soda_o_rat dans le forum C++
    Réponses: 9
    Dernier message: 05/08/2005, 01h14

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