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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé 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
    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 ??

  2. #2
    Membre éclairé 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
    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...

  3. #3
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    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 éclairé 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
    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";
    }

  5. #5
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    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 éclairé 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
    Par défaut
    sorry

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -command => [\&go, \$mon_choix],

+ 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