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 :

choix et SUB en tk


Sujet :

Interfaces Graphiques Perl

  1. #1
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut choix et SUB en tk
    Bonjour,

    j'ai une liste déroulante me permettant de faire un choix () c'est choix devrait correspondre à des scripts que je voudrais transformer en SUB.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    my $mon_choix;
    my $menu_deroulant = $fenetre_principale->BrowseEntry(
      -label => 'Action : ',
      -choices => ['Numéroter les fichiers', 'Re-numéroter suite à la suppression de fichiers', 'Re-numérotation sans suppression de fichiers', 'Contrôle de fin de traitement'],
      -variable => \$mon_choix,
    )->pack();
    ici, mon bouton permettant normalement de lancer le script ou : \&feu est un ancien SUB pour l'exemple...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    my $BoutonGO = $fenetre_principale->Button(
      -text    => " Lancer le traitement ",
      -command => \&feu,
    );
    Je me demandais command attribuer le bon SUB en fonction du choix ?

    \&mon_choix ??

    avec en sub le nom de mes choix ??
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  2. #2
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $fenetre_principale->Label(
     -variable => \$mon_choix,
    )->pack( qw/ -padx 10 -pady 10 / );
    J'ai oublié cette partie là qq part...
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  3. #3
    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
    Voici un exemple :
    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
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    use Tk;
    use Tk::BrowseEntry;
    use utf8;
     
    my $fenetre_principale = MainWindow->new( -title => 'menu déroulant' );
    my $mon_choix;
    my $menu_deroulant = $fenetre_principale->BrowseEntry(
      -label   => 'Action : ',
      -choices => [
        'Numéroter les fichiers',
        'Re-numéroter suite à la suppression de fichiers',
        'Re-numérotation sans suppression de fichiers',
        'Contrôle de fin de traitement'
      ],
      -variable => \$mon_choix,
    )->pack(qw/ -padx 10 -pady 5 /);
     
    my $BoutonGO = $fenetre_principale->Button(
      -text    => " Lancer le traitement ",
      -command => [ \&go, \$mon_choix ],
    )->pack(qw/ -padx 10 -pady 5 /);
     
    MainLoop;
     
    sub go {
      my ($ref_choix) = @_;
     
      my $choix = ${$ref_choix};
      if    ( $choix eq 'Numéroter les fichiers' )                           { numeroter(); }
      elsif ( $choix eq 'Re-numéroter suite à la suppression de fichiers' ) { renumeroter(); }
      elsif ( $choix eq 'Re-numérotation sans suppression de fichiers' )     { rerenumeroter(); }
      elsif ( $choix eq 'Contrôle de fin de traitement' )                    { controle(); }
     
    }
     
    sub numeroter {
      print "sub numeroter\n";
    }
     
    sub renumeroter {
      print "sub renumeroter\n";
    }
     
    sub rerenumeroter {
      print "sub rerenumeroter\n";
    }
     
    sub controle {
      print "sub controle\n";
    }

  4. #4
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    J'ai cette erreur...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Can't use an undefined value as a SCALAR reference at C:\DOCUME~1\MEURY\Bureau\S
    CRIPT~2\TEST\renamer\test-tk.pl line 89.
    Voici le code plus ou moins entier sur lequel je bosse...
    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
    103
    104
    105
    106
    107
    108
    109
    110
    111
    #!/usr/local/bin/perl
     
    use warnings;
    use strict;
    use Tk;
    use Tk::BrowseEntry;
    use File::Copy;
     
    my ( $repertoire, $fichier_output );
    my $fenetre_principale = MainWindow->new( -title => 'Numérobis' , -background => '#CF0063',);
    $fenetre_principale->minsize( 400, 200 );
     
    ####################################
    ## POUR CENTRER MA FENETRE A L'ECRAN
    ####################################
    CentrerWidget($fenetre_principale);
     
    sub CentrerWidget {
      unless ( scalar(@_) == 1 ) {
        die('Usage : CentrerWidget( $fenetre_principale );');
      }
      my ($Widget) = @_;
     
      # Height and width of the screen
      my $LargeurEcran = $Widget->screenwidth();
      my $HauteurEcran = $Widget->screenheight();
     
      # update le widget pour recuperer les vraies dimensions
      $Widget->update;
      my $LargeurWidget = $Widget->width;
      my $HauteurWidget = $Widget->height;
     
      # On centre le widget en fonction de la taille de l'ecran
      my $NouvelleLargeur = int( ( $LargeurEcran - $LargeurWidget ) / 2 );
      my $NouvelleHauteur = int( ( $HauteurEcran - $HauteurWidget ) / 2 );
      $Widget->geometry( $LargeurWidget . "x" . $HauteurWidget . "+$NouvelleLargeur+$NouvelleHauteur" );
     
      $Widget->update;
     
      return;
    }
     
    ####################################
    ## selection du repertoire à traiter
    ####################################
    my $LabelInput = $fenetre_principale->Label( -text => 'Quel dossier traiter ?  : ' );
     
    my $BoutonInput = $fenetre_principale->Button(
      -text    => ' ... ',
      -command => sub { $repertoire = $fenetre_principale->chooseDirectory(
      -title      => "Mon titre",   # Titre fenêtre
      -initialdir => "C:/",         # Répertoire par défaut D:/ScanImag/
      -mustexist  => 1,             # Le répertoire sélectionné doit exister
    ); }
    );
     
    my $AfficheInput = $fenetre_principale->Label( -textvariable => \$repertoire );
     
    #################
    ## menu déroulant
    #################
    my $mon_choix;
    my $menu_deroulant = $fenetre_principale->BrowseEntry(
      -label => 'Action : ',
      -choices => ['Numéroter les fichiers', 'Re-numéroter suite à la suppression de fichiers', 'Re-numérotation sans suppression de fichiers', 'Contrôle de fin de traitement'],
      -variable => \$mon_choix,
    )->pack(qw/ -padx 10 -pady 5/);
     
    ################
    ## bouton action
    ################
    my $BoutonGO = $fenetre_principale->Button(
      -text    => " Lancer le traitement ",
      -command => [&go, \&mon_choix],
    )->pack(qw/ -padx 10 -pady 5/);
     
    ###########################
    ## disposition des éléments
    ###########################
    $LabelInput->grid(  $AfficheInput,$BoutonInput, qw/ -sticky new -pady 25 -padx 15/ );
    $menu_deroulant->grid( '-', qw/ -sticky nsew -pady 15 -padx 15/ );
    $BoutonGO->grid( '-', qw/ -sticky nsew -pady 25 -padx 15/ );
     
    MainLoop;
     
    sub go {
      my ($ref_choix) = @_;
     
      my $choix = ${$ref_choix};
      if    ( $choix eq 'Numéroter les fichiers' )                           { Num_Fichiers(); }
      elsif ( $choix eq 'Re-numéroter suite à la suppression de fichiers' ) { ReNum_eff(); }
      elsif ( $choix eq 'Re-numérotation sans suppression de fichiers' )     { ReNum(); }
      elsif ( $choix eq 'Contrôle de fin de traitement' )                    { controle(); }
     
    }
     
    sub Num_Fichiers {
    print "OK num";
    }
     
    sub ReNum {
    print "OK renum";
    }
     
    sub ReNum_eff {
    print "OK num eff";
    }
     
    sub controle {
    print "OK controle";
    }
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  5. #5
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -command => [&go, \&mon_choix],
    Là, tu envoie la référence à une procédure alors qu'ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $choix = ${$ref_choix};
    tu cherche à dé-référencer une variable .

  6. #6
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    sorry

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -command => [\&go, \$mon_choix],
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  7. #7
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    je cloture pas j'ai d'autres questions dans 1\2 heures
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  8. #8
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    Hello,

    Donc avec tes conseils je suis arrivé à ça...

    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
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    #!/usr/local/bin/perl
     
    use warnings;
    use strict;
    use Tk;
    use Tk::BrowseEntry;
    use File::Copy;
     
    my $repertoire;
    my $fenetre_principale = MainWindow->new( -title => 'Numérobis' , -background => '#CF0063',);
    $fenetre_principale->minsize( 400, 200 );
     
    ####################################
    ## POUR CENTRER MA FENETRE A L'ECRAN
    ####################################
    CentrerWidget($fenetre_principale);
     
    sub CentrerWidget {
      unless ( scalar(@_) == 1 ) {
        die('Usage : CentrerWidget( $fenetre_principale );');
      }
      my ($Widget) = @_;
      # Height and width of the screen
      my $LargeurEcran = $Widget->screenwidth();
      my $HauteurEcran = $Widget->screenheight();
      # update le widget pour recuperer les vraies dimensions
      $Widget->update;
      my $LargeurWidget = $Widget->width;
      my $HauteurWidget = $Widget->height;
      # On centre le widget en fonction de la taille de l'ecran
      my $NouvelleLargeur = int( ( $LargeurEcran - $LargeurWidget ) / 2 );
      my $NouvelleHauteur = int( ( $HauteurEcran - $HauteurWidget ) / 2 );
      $Widget->geometry( $LargeurWidget . "x" . $HauteurWidget . "+$NouvelleLargeur+$NouvelleHauteur" );
      $Widget->update;
      return;
    }
     
    ####################################
    ## selection du repertoire à traiter
    ####################################
    my $LabelInput = $fenetre_principale->Label( -text => 'Quel dossier traiter ?  : ' );
    my $BoutonInput = $fenetre_principale->Button(
      -text    => ' ... ',
      -command => sub { $repertoire = $fenetre_principale->chooseDirectory(
      -title      => "Mon titre",   # Titre fenêtre
      -initialdir => "C:/",         # Répertoire par défaut D:/ScanImag/
      -mustexist  => 1,             # Le répertoire sélectionné doit exister
      ); }
    );
    my $AfficheInput = $fenetre_principale->Label( -textvariable => \$repertoire );
     
    #################
    ## menu déroulant
    #################
    my $mon_choix;
    my $menu_deroulant = $fenetre_principale->BrowseEntry(
      -label => 'Action : ',
      -choices => ['Numéroter les fichiers', 'Re-numéroter suite à la suppression de fichiers', 'Re-numérotation sans suppression de fichiers', 'Contrôle de fin de traitement'],
      -variable => \$mon_choix,
    )->pack(qw/ -padx 10 -pady 5/);
     
    ################
    ## bouton action
    ################
    my $BoutonGO = $fenetre_principale->Button(
      -text    => " Lancer le traitement ",
      -command => [\&go, \$mon_choix],
    )->pack(qw/ -padx 10 -pady 5/);
     
    ###########################
    ## disposition des éléments
    ###########################
    $LabelInput->grid(  $AfficheInput,$BoutonInput, qw/ -sticky new -pady 25 -padx 15/ );
    $menu_deroulant->grid( '-', qw/ -sticky nsew -pady 15 -padx 15/ );
    $BoutonGO->grid( '-', qw/ -sticky nsew -pady 25 -padx 15/ );
     
    MainLoop;
     
    sub go {
      my ($ref_choix) = @_;
      my $choix = ${$ref_choix};
      if    ( $choix eq 'Numéroter les fichiers' ) { Num_Fichiers(); }
      elsif ( $choix eq 'Re-numéroter suite à la suppression de fichiers' ) { ReNum_eff(); }
      elsif ( $choix eq 'Re-numérotation sans suppression de fichiers' ) { one(); }
      elsif ( $choix eq 'Contrôle de fin de traitement' ) { controle(); }
      }
     
    sub Num_Fichiers {
    print "combien de premieres pages sont sans numero :";
    my $num = <STDIN>;
    chomp $num;
    print "Quel est le premier numero de page visible : ";
    my $page = <STDIN>;
    chomp $page;
     
    # Ouverture du répertoire
    opendir (my $FhRep, $repertoire)
      or die "impossible d'ouvrir le répertoire $repertoire\n";
     
    my @Contenu = grep { /\.JPG/ } readdir($FhRep); # Liste fichiers ayant pour extension JPG
    closedir ($FhRep);                              # Fermeture du répertoire
     
    my $result1 = $page - $num;
    my $new;
     
    foreach my $nom ( @Contenu ) {
        $nom =~ /(\d\d?\d?\d?\_(L|R))(\.\w{3})/;
        $new = $result1.$3 ;
        rename ($nom, $new);
        $result1++ ;
        }
    ## dialogue
    my $mw = new MainWindow( -title => "Boite de dialogue", );
    $mw->minsize( 300,100 );
    my $reponse_messageBox = $mw->messageBox(
          -icon    => 'info',
          -title   => 'Mon titre',
          -type    => 'OK',
          -message => 'Le traitement est terminé !',
          )->pack( qw/ -padx 10 -pady 10 / );
    MainLoop;
     
    }

    Vu que mes SUB (là y a qu'un pour l'exemple) sont des scripts distinct à la base, j'ai des p'tit soucis.

    je voulais que lors du lancement de mon sub une boite de dialogue s'ouvre me permettant d'entrer les valeurs que demandent normalement mes print dans le shell mais malgrès quelques essais, je n'arrive pas à le faire fonctionner...

    est-il possible à l'interieur d'un SUB de lancer une boite de dialogue permettant la saisie de valeur puis en validant de poursuivre le reste du SUB ?
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  9. #9
    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
    Oui il est possible, mais c'est à toi de le programmer. Tu peux créer une procédure qui créée une boite de dialogue avec un ou plusieurs widget de saisie. puis tu l'appelles quand bon te semble.
    Perl/Tk comme d'ailleurs tout autre langage de programmation d'interface graphique, il faut tout programmer et donc bien réfléchir à ses souhaits. Les codes sont long mais c'est ainsi. Donc essaye de faire quelques choses et j'essayerai de t'aider quand j'aurais du temps.

  10. #10
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    Hello Djibril,

    voici un bout de code d'après ce que tu m'as fait...

    En fait, dans tout mon prog. j'ai :

    - 4 scripts qui sont susceptible d'être lancer (d'ou le menu déroulant)
    - ils ont un paramètre en commun (le répertoire)
    - chacun à 2 paramètres qui ont un libéllé différents (c'est pourquoi j'aurai voulu lancer une boite de dialogue me permettant de saisir les valeur...)

    Je ne sais pas s'il est possible de : en fonction du script sélectionné (sans validation au bouton) de faire afficher des labels différents en face de champs de saisie. Parce que ça serait encore mieux !


    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
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    use Tk;
    use Tk::BrowseEntry;
     
     
    my $fenetre_principale = MainWindow->new( -title => 'menu déroulant' );
    my $mon_choix;
    my $menu_deroulant = $fenetre_principale->BrowseEntry(
      -label   => 'Action : ',
      -choices => [
        'Numéroter les fichiers',
        'Re-numéroter suite à la suppression de fichiers',
        'Re-numérotation sans suppression de fichiers',
        'Contrôle de fin de traitement'
      ],
      -variable => \$mon_choix,
    )->pack(qw/ -padx 10 -pady 5 /);
     
    my $BoutonGO = $fenetre_principale->Button(
      -text    => " Lancer le traitement ",
      -command => [ \&go, \$mon_choix ],
    )->pack(qw/ -padx 10 -pady 5 /);
     
    MainLoop;
     
    sub go {
      my ($ref_choix) = @_;
     
      my $choix = ${$ref_choix};
      if    ( $choix eq 'Numéroter les fichiers' )                           { one(); }
      elsif ( $choix eq 'Re-numéroter suite à la suppression de fichiers' ) { renumeroter(); }
      elsif ( $choix eq 'Re-numérotation sans suppression de fichiers' )     { rerenumeroter(); }
      elsif ( $choix eq 'Contrôle de fin de traitement' )                    { controle(); }
     
    }
     
     
    sub one{
     
    my $fenetre_principale2 = MainWindow->new( -title => 'Obis' , -background => '#CF0050',);
    $fenetre_principale2->minsize( 400, 100 );
     
    my $Label_UN = $fenetre_principale2->Label( -text => 'Quel est le premier numero de page correct : ')->grid( '-', qw/ -sticky nsew -pady 15 -padx 15/ );
    my $un = $fenetre_principale2->Entry( )->pack( qw/ -side left/ );
    chomp $un;
    my $Label_DEUX = $fenetre_principale2->Label( -text => 'Quel est le dernier numero de page correct : ')->grid( '-', qw/ -sticky nsew -pady 15 -padx 15/ );
    my $deux = $fenetre_principale2->Entry( )->pack( qw/ -side left/ );
    chomp $deux;
     
    my $BoutonGO2 = $fenetre_principale2->Button(
      -text    => " Lancer le traitement ",
      -command => [\&numeroter,\$un, \$deux],
    )->pack(qw/ -padx 10 -pady 5/);
     
    }
     
    sub numeroter {
     
    ## comment récupérer mes deux variables du sub one
     
      print "sub numeroter de $un à $deux\n";
    }
     
    sub renumeroter {
      print "sub renumeroter\n";
    }
     
    sub rerenumeroter {
      print "sub rerenumeroter\n";
    }
     
    sub controle {
      print "sub controle\n";
    }
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  11. #11
    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
    Bon, je vois que tu es largué .

    1) Pour créer des fenêtres de premier niveau, il est nécessaire d'utiliser MainWindows si c'est le programme principal, ou bien Toplevel pour le reste. Il est aussi possible d'utiliser les Boites de dialogue sur lesquelles tu poses tes widgets.

    2) Attention, dans un même cadre, widget, tu ne peux pas utiliser des gestionnaires de placement différents. Soit tu utilises pack, grid ou un autre. Si tu les mélange, Tk plantera en n'affichant rien du tout sans forcément afficher un message d'erreur. La meilleure façon est de regrouper le code de placement à un endroit pour chaque widget comme le montre les lignes 70 et 71.

    Voici le programme, j'ai créé une procédure dont le but est d'afficher une boite de saisie générique. Les labels changeront en fonction des arguments passés à la procédure. Cette boite de saisie est créée via une boite de dialogue, ce qui évite à devoir gérer les focus de premier plan, la création d'un bouton...
    Voilà, essaye de comprendre le programme et surtout sa logique. Rien ne sert de se contenter du résultat si tu ne comprends pas la logique. N'hésite pas si tu as des questions, le forum est là pour ça.
    :
    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
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    #!/usr/bin/perl
    #==========================================================================
    # Auteur : xxxxx
    # Date   : 18/07/2011 12:09:45
    # But    : Lancer des traitements
    #==========================================================================
    use strict;
    use warnings;
     
    use Tk;
    use Tk::DialogBox;
    use Tk::BrowseEntry;
    use utf8;
     
    # Fenêtre principale
    my $fenetre_principale = MainWindow->new( -title => 'menu déroulant' );
    my $mon_choix = 'Numéroter les fichiers';
    my $menu_deroulant = $fenetre_principale->BrowseEntry(
      -label   => 'Action : ',
      -choices => [
        'Numéroter les fichiers',
        'Re-numéroter suite à la suppression de fichiers',
        'Re-numérotation sans suppression de fichiers',
        'Contrôle de fin de traitement'
      ],
      -variable => \$mon_choix,
    )->pack(qw/ -padx 10 -pady 5 /);
     
    # Bouton de lancement du traitement
    my $BoutonGO = $fenetre_principale->Button(
      -text    => " Lancer le traitement ",
      -command => [ \&go, \$mon_choix ],
    )->pack(qw/ -padx 10 -pady 5 /);
     
    MainLoop;
     
    sub go {
      my ($ref_choix) = @_;
     
      my $choix = ${$ref_choix};
      if ( $choix eq 'Numéroter les fichiers' ) { one($fenetre_principale); }
      elsif ( $choix eq 'Re-numéroter suite à la suppression de fichiers' ) {
        renumeroter($fenetre_principale);
      }
      elsif ( $choix eq 'Re-numérotation sans suppression de fichiers' ) { rerenumeroter($fenetre_principale); }
      elsif ( $choix eq 'Contrôle de fin de traitement' ) { controle($fenetre_principale); }
     
    }
     
    # Création d'une boite de dialogue à la demande avec le label qui change
    # Ce dernier retourne des données saisies par l'utilisateurs
    sub obtenir_boite_saisie {
      my ( $widget, $label1, $label2 ) = @_;
     
      # Création d'un widget de premier niveau
      my $DialogBox = $widget->DialogBox(
        -title          => 'Saisie de données',
        -buttons        => [ 'Soumettez', 'Annulez' ],
        -default_button => 'Soumettez',
      );
     
      # Premier champ de saisie
      my $label_data1 = $DialogBox->Label( -text => $label1, );
      my $un = $DialogBox->Entry();
     
      # Deuxième champ de saisie
      my $label_data2 = $DialogBox->Label( -text => $label2, );
      my $deux = $DialogBox->Entry();
     
      $label_data1->grid( $un,   qw/ -padx 10 / );
      $label_data2->grid( $deux, qw/ -padx 10 / );
     
      my $reponse = $DialogBox->Show();
     
      if ( $reponse eq 'Soumettez' ) {
        return ( $un, $deux );
      }
      else {
        return;
      }
     
    }
     
    sub one {
      my ($widget) = @_;
     
      print "Procedure one\n";
      my ( $entry_saisie1, $entry_saisie2 ) = obtenir_boite_saisie( $widget, 'Label1 : ', 'Label2 : ' );
     
      # Récupération des données
      if ($entry_saisie1 and $entry_saisie2) {
        my $data1 = $entry_saisie1->get;
        my $data2 = $entry_saisie2->get;
        print "$data1 et $data2\n";
      }
      return;
    }
     
    sub numeroter {
      my ($widget) = @_;
     
      print "Procedure numeroter\n";
      my ( $entry_saisie1, $entry_saisie2 ) = obtenir_boite_saisie( $widget, 'Saisie 1 : ', 'Saisie 2 : ' );
     
      # Récupération des données
      if ($entry_saisie1 and $entry_saisie2) {
        my $data1 = $entry_saisie1->get;
        my $data2 = $entry_saisie2->get;
        print "$data1 et $data2\n";
      }
      return;
    }
     
    sub renumeroter {
      my ($widget) = @_;
     
      print "sub renumeroter\n";
      my ( $entry_saisie1, $entry_saisie2 ) = obtenir_boite_saisie( $widget, 'Champ 1 : ', 'Champ 2 : ' );
     
      # Récupération des données
      if ($entry_saisie1 and $entry_saisie2) {
        my $data1 = $entry_saisie1->get;
        my $data2 = $entry_saisie2->get;
        print "$data1 et $data2\n";
      }
      return;
    }
     
    sub rerenumeroter {
      my ($widget) = @_;
     
      print "sub rerenumeroter\n";
      my ( $entry_saisie1, $entry_saisie2 ) = obtenir_boite_saisie( $widget, 'Data 1 : ', 'Data 2 : ' );
     
      # Récupération des données
      if ($entry_saisie1 and $entry_saisie2) {
        my $data1 = $entry_saisie1->get;
        my $data2 = $entry_saisie2->get;
        print "$data1 et $data2\n";
      }
      return;
    }
     
    sub controle {
      my ($widget) = @_;
     
      print "sub controle\n";
      my ( $entry_saisie1, $entry_saisie2 ) = obtenir_boite_saisie( $widget, 'Données 1 : ', 'Donnée 2 : ' );
     
      # Récupération des données
      if ($entry_saisie1 and $entry_saisie2) {
        my $data1 = $entry_saisie1->get;
        my $data2 = $entry_saisie2->get;
        print "$data1 et $data2\n";
      }
      return;
    }

  12. #12
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    Citation Envoyé par djibril Voir le message
    Bon, je vois que tu es largué .
    désolé, je croyais que tu avais compris depuis le temps


    Citation Envoyé par djibril Voir le message
    Voici le programme, j'ai créé une procédure dont le but est d'afficher une boite de saisie générique. Les labels changeront en fonction des arguments passés à la procédure. Cette boite de saisie est créée via une boite de dialogue, ce qui évite à devoir gérer les focus de premier plan, la création d'un bouton...
    Voilà, essaye de comprendre le programme et surtout sa logique. Rien ne sert de se contenter du résultat si tu ne comprends pas la logique. N'hésite pas si tu as des questions, le forum est là pour ça.
    Vraiment la classe...MERCI, bien sûr que je vais bien l'étudier et l'adapter...

    Merci et merci et merci et .... MERCI
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  13. #13
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    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
    sub obtenir_boite_saisie {
      my ( $widget, $label1, $label2 ) = @_;
     
      # Création d'un widget de premier niveau
      my $DialogBox = $widget->DialogBox(
        -title          => 'Saisie de données',
        -buttons        => [ 'Soumettez', 'Annulez' ],
        -default_button => 'Soumettez',
      );
     
      # Premier champ de saisie
      my $label_data1 = $DialogBox->Label( -text => $label1, );
      my $un = $DialogBox->Entry();
     
      # Deuxième champ de saisie
      my $label_data2 = $DialogBox->Label( -text => $label2, );
      my $deux = $DialogBox->Entry();
     
      $label_data1->grid( $un,   qw/ -padx 10 / );
      $label_data2->grid( $deux, qw/ -padx 10 / );
     
      my $reponse = $DialogBox->Show();
     
      if ( $reponse eq 'Soumettez' ) {
        return ( $un, $deux );
      }
      else {
        return;
      }
     
    }
     
    sub numeroter {
      my ($widget) = @_;
     
      my ( $entry_saisie1, $entry_saisie2 ) = obtenir_boite_saisie( $widget, 'Combien de page sont sans numéro : ', 'Quel est le premier numéro de page visible : ' );
     
      # Récupération des données
      if ($entry_saisie1 and $entry_saisie2) {
        my $data1 = $entry_saisie1->get;
        my $data2 = $entry_saisie2->get;
        my $num = $data1;
        my $page = $data2;
     
        opendir (my $FhRep, $repertoire)
      or die "impossible d'ouvrir le répertoire $repertoire\n";
     
    my @Contenu = grep { /\.JPG/ } readdir($FhRep);
    closedir ($FhRep);
     
    @Contenu = sort @Contenu;
    my $result1 = $page - $num;
    print $result1."\n";
    my $new;
     
    foreach my $nom ( @Contenu ) {
        $nom =~ /(\d\d?\d?\d?\_(L|R))(\.\w{3})/;
        print $nom."\n";
        $new = $result1.$3 ;
        rename ($nom, $new);
        print $new."\n";
        $result1++ ;
        print "idiot !!  "
        }
      }
      return;
    }
    Effectivement je comprend pas tout...

    dans "sub obtenir_boite_saisie" tu retournes $un et $deux
    et dans "sub numeroter" on utilise $data1 et $data2 ?

    j'ai rajouté dans le deuxième sub mon bout de script mais je ne comprend pas pourquoi dans le shell il affiche bien et fait ce qui lui est demandé et, dans le "physique" il ne se passe rien...
    le script modifie des noms de fichiers nommés 12_L.JPG, 3_R.JPG il ne se passe rien, par contre dans le shell c'est bon...

    tu peux encore m'éclairer ?
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  14. #14
    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
    la procédure obtenir_boite_saisie retourne 2 variable contenant chacune le widget Entry de saisie. Le nom des variables n'a aucune importance.

    Dans la procédure numeroter , je récupère ces variables via les noms
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        my $data1 = $entry_saisie1->get;
        my $data2 = $entry_saisie2->get;
    on aurait pu les appeler $toto, $tutu à la place des nom data1, $data2. Du mon où elles sont déclarées dans ton sub, le nom n'a pas d'importance non plus. Tu aurais même pu faire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        my $num = $entry_saisie1->get;
        my $page = $entry_saisie2->get;
    Le plus important, c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my ( $entry_saisie1, $entry_saisie2 ) = obtenir_boite_saisie( $widget, 'Combien de page sont sans numéro : ', 'Quel est le premier numéro de page visible : ' );
    Maintenant, je ne comprends pas ton souci, qu'entends tu par le physique ?

  15. #15
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    j'savais que j'aurai dû preciser... ;O)

    en fait les scripts vont dans une répertoire et y font les modifications nécessaire...chose que ne se passe pas...sûrement une étourderie de ma part...mais je trouve pas.

    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
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    #!/usr/bin/perl
     
    #==========================================================================
    # Auteur : ##
    # Date   : 18/07/2011 12:09:45
    # But    : Lancer des traitements
    #==========================================================================
     
    use strict;
    use warnings;
     
    use Tk;
    use Tk::DialogBox;
    use Tk::BrowseEntry;
    use File::Copy;
     
    my $repertoire;
    my $fenetre_principale = MainWindow->new( -title => 'Numérobis' , -background => '#CF0063',);
    $fenetre_principale->minsize( 600, 200 );
     
    ####################################
    ## POUR CENTRER MA FENETRE A L'ECRAN
    ####################################
    CentrerWidget($fenetre_principale);
     
    sub CentrerWidget {
      unless ( scalar(@_) == 1 ) {
        die('Usage : CentrerWidget( $fenetre_principale );');
      }
      my ($Widget) = @_;
      # Height and width of the screen
      my $LargeurEcran = $Widget->screenwidth();
      my $HauteurEcran = $Widget->screenheight();
      # update le widget pour recuperer les vraies dimensions
      $Widget->update;
      my $LargeurWidget = $Widget->width;
      my $HauteurWidget = $Widget->height;
      # On centre le widget en fonction de la taille de l'ecran
      my $NouvelleLargeur = int( ( $LargeurEcran - $LargeurWidget ) / 2 );
      my $NouvelleHauteur = int( ( $HauteurEcran - $HauteurWidget ) / 2 );
      $Widget->geometry( $LargeurWidget . "x" . $HauteurWidget . "+$NouvelleLargeur+$NouvelleHauteur" );
      $Widget->update;
      return;
    }
     
    ####################################
    ## selection du repertoire à traiter
    ####################################
    my $LabelInput = $fenetre_principale->Label( -text => 'Quel dossier traiter ?  : ' );
    my $BoutonInput = $fenetre_principale->Button(
      -text    => ' ... ',
      -command => sub { $repertoire = $fenetre_principale->chooseDirectory(
      -title      => "Mon titre",   # Titre fenêtre
      -initialdir => "C:/Documents and Settings/MEURY/Bureau/Script PERL/TEST/renamer",  # Répertoire par défaut D:/ScanImag/
      -mustexist  => 1,             # Le répertoire sélectionné doit exister
      ); }
    );
    my $AfficheInput = $fenetre_principale->Label( -textvariable => \$repertoire );
     
    #################
    ## menu déroulant
    #################
    my $mon_choix;
    my $menu_deroulant = $fenetre_principale->BrowseEntry(
      -label => 'Action : ',
      -choices => ['Numéroter les fichiers',
                   'Re-numéroter suite à la suppression de fichiers',
                   'Re-numérotation sans suppression de fichiers',
                   'Contrôle de fin de traitement'],
      -variable => \$mon_choix,
    )->pack(qw/ -padx 10 -pady 5/);
     
    ################
    ## bouton action
    ################
    my $BoutonGO = $fenetre_principale->Button(
      -text    => " Lancer le traitement ",
      -command => [\&go, \$mon_choix],
    )->pack(qw/ -padx 10 -pady 5/);
     
    ###########################
    ## disposition des éléments
    ###########################
    $LabelInput->grid(  $AfficheInput,$BoutonInput, qw/ -sticky new -pady 25 -padx 15/ );
    $menu_deroulant->grid( '-', qw/ -sticky nsew -pady 15 -padx 15/ );
    $BoutonGO->grid( '-', qw/ -sticky nsew -pady 25 -padx 15/ );
     
    MainLoop;
     
    sub go {
      my ($ref_choix) = @_;
     
      my $choix = ${$ref_choix};
      if ( $choix eq 'Numéroter les fichiers' ) { numeroter($fenetre_principale); }
      elsif ( $choix eq 'Re-numéroter suite à la suppression de fichiers' ) {
        renumeroter($fenetre_principale);
      }
      elsif ( $choix eq 'Re-numérotation sans suppression de fichiers' ) { rerenumeroter($fenetre_principale); }
      elsif ( $choix eq 'Contrôle de fin de traitement' ) { controle($fenetre_principale); }
     
    }
     
    # Création d'une boite de dialogue à la demande avec le label qui change
    # Ce dernier retourne des données saisies par l'utilisateurs
    sub obtenir_boite_saisie {
      my ( $widget, $label1, $label2 , $label3) = @_;        #
     
      # Création d'un widget de premier niveau
      my $DialogBox = $widget->DialogBox(
        -title          => 'Saisie de données',
        -buttons        => [ 'Soumettez', 'Annulez' ],
        -default_button => 'Soumettez',
      );
     
      my $label_Exp = $DialogBox->Label( -text => $label3, );
     
      # Premier champ de saisie
      my $label_data1 = $DialogBox->Label( -text => $label1, );
      my $un = $DialogBox->Entry();
     
      # Deuxième champ de saisie
      my $label_data2 = $DialogBox->Label( -text => $label2, );
      my $deux = $DialogBox->Entry();
      $label_Exp->grid( $label_Exp, qw/ -padx 30 / );
      $label_data1->grid( $un,   qw/ -padx 10 / );
      $label_data2->grid( $deux, qw/ -padx 10 / );
     
     
      my $reponse = $DialogBox->Show();
     
      if ( $reponse eq 'Soumettez' ) {
        return ( $un, $deux, $label_Exp );
      }
      else {
        return;
      }
     
    }
     
    sub numeroter {
      my ($widget) = @_;
     
      my ( $entry_saisie1, $entry_saisie2, $label_Exp ) = obtenir_boite_saisie(
      $widget,
      'Combien de page sont sans numéro : ',
      'Quel est le premier numéro de page visible : ' ,
      "Script à utiliser en premier et une seule fois,\npermet la numérotation continue des pages.\n"
      );
     
      # Récupération des données
      if ($entry_saisie1 and $entry_saisie2) {
        my $data1 = $entry_saisie1->get;
        my $data2 = $entry_saisie2->get;
        my $num = $data1;
        my $page = $data2;
     
        opendir (my $FhRep, $repertoire)
      or die "impossible d'ouvrir le répertoire $repertoire\n";
     
    my @Contenu = grep { /\.JPG/ } readdir($FhRep);
    closedir ($FhRep);
     
    @Contenu = sort @Contenu;
    my $result1 = $page - $num;
    print $result1."\n";
    my $new;
     
    foreach my $nom ( @Contenu ) {
        $nom =~ /(\d\d?\d?\d?\_(L|R))(\.\w{3})/;
        print $nom."\n";
        $new = $result1.$3 ;
        rename ($nom, $new);
        print $new."\n";
        $result1++ ;
        print "idiot !!  "
        }
      }
      return;
    }
     
    sub renumeroter {
      my ($widget) = @_;
     
      my ( $entry_saisie1, $entry_saisie2, $label_Exp  ) = obtenir_boite_saisie(
      $widget,
      'Quel est le dernier numéro de page correct : ',
      'Quel est le prochain numéro à attribuer : ',
      "Permet une re-numérotation suite à la suppression de pages.\n"
      );
     
      # Récupération des données
      if ($entry_saisie1 and $entry_saisie2) {
        my $data1 = $entry_saisie1->get;
        my $data2 = $entry_saisie2->get;
        print "$data1 et $data2\n";
      }
      return;
    }
     
    sub rerenumeroter {
      my ($widget) = @_;
     
      my ( $entry_saisie1, $entry_saisie2, $label_Exp ) = obtenir_boite_saisie(
      $widget,
      'Quel est le dernier numéro de page/fichier correct : ',
      'Quel est le numero de fichier qui suit (meme s\'il est faux) : ',
      "Permet une re-numérotation parce que des pages ont été sautés.\n"
      );
     
      # Récupération des données
      if ($entry_saisie1 and $entry_saisie2) {
        my $data1 = $entry_saisie1->get;
        my $data2 = $entry_saisie2->get;
        print "$data1 et $data2\n";
      }
      return;
    }
     
    sub controle {
      my ($widget) = @_;
     
      my ( $entry_saisie1, $entry_saisie2, $label_Exp ) = obtenir_boite_saisie(
      $widget,
      'Indiquer est le premier numero de fichier : ',
      'Indiquer est le dernier numero de fichier : ',
      "Script permettant de contrôler qu'il ne manque pas de page\nà utiliser à la fin des traitements.\n"
      );
     
      # Récupération des données
      if ($entry_saisie1 and $entry_saisie2) {
        my $data1 = $entry_saisie1->get;
        my $data2 = $entry_saisie2->get;
        print "$data1 et $data2\n";
      }
      return;
    }
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  16. #16
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    dans le sub numeroter tu trouveras un exemple de ce que je veux faire...

    la question que je me pose est pourquoi les print dans le shell renvoient bien ce que je veux à savoir le changement des noms de fichier alors que les actions rename ne renomme pas réellement les fichiers dans le répertoire.
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  17. #17
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    C'est ok ça à fonctionner...je pense que j'ai un prob avec mon "PERL Editor"

    MErci
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/02/2009, 17h04
  2. [Choix] Quelles attentes par rapport aux SGBD ?
    Par thierry34 dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 13/07/2002, 20h08
  3. [Choix] SGDB pour Entreprise : coût, efficacité, etc.
    Par grassat dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 15/06/2002, 08h52
  4. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 15h23
  5. Choix d'un ORB
    Par Anonymous dans le forum CORBA
    Réponses: 4
    Dernier message: 06/05/2002, 11h15

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