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 :

Update d'un champs via un bouton


Sujet :

Interfaces Graphiques Perl

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 84
    Points : 47
    Points
    47
    Par défaut Update d'un champs via un bouton
    Salut,

    Tout d'abord, bravo pour ce forum sur tk, je suis débutant et pas simple d'avoir des infos, des tutos et autres!

    Donc, je suis débutant et je tente de créer un petit outils pour le taf, et je plante actuellement sur un point (certainement bateau mais bon).

    Voici mon code actuel:
    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
     
    use Tk;
     
    $mw = MainWindow -> new();
    $mw -> title("BB!");
    $mw->geometry("300x100");
     
    $b_menu = $mw -> Frame(-relief => 'groove', -borderwidth => 2);
     
    $menu_app = $b_menu -> Menubutton (-text => "File",
                                    -tearoff => 0,
                                    -relief => 'ridge',
                                    -menuitems => [
                                                    ['command' => "Create new TLSE",-command => \&create_tlse],
                                                    ['command' => "Delete TLSE",-command => \&delete_tlse],
                                                    ['command' => "Exit",-command => sub {exit;}]
                                                  ]
                                    );
     
    $menu_app -> pack(-side => 'left');
    $b_menu -> pack(-side => 'top', -anchor => 'n', -fill => 'x');
     
    #Frame containing all TLSE
    $all_tlse = $mw -> Frame(-relief => 'raised', -borderwidth => 2) -> pack();
     
    $end = $mw -> Label(-relief => 'groove', -text => "2010", -font => '{Garamond} 10') -> pack (-side => 'bottom', -fill => 'both');
     
    MainLoop;
     
    #---------------------Subfonction------------------------------
     
    sub create_tlse {
     
            $tlse_creation = $mw -> Toplevel();
            $tlse_creation_title = $tlse_creation -> Label(-text => "Create a new TLSE") -> pack();
     
            $ent_name = $tlse_creation -> Entry() -> pack();
     
            $valid_button = $tlse_creation -> Button(-text => "Create", command => \&tlse) -> pack(-side => 'left');
            $but_close = $tlse_creation -> Button(-text=> "Close", -command => sub{ destroy $tlse_creation; }) -> pack();
    }
     
    sub tlse {
     
            #Frame TLSE
            $tlse_name = $all_tlse -> Frame(-relief => 'groove', -borderwidth => 2) -> pack(-side => 'left');
            $name = $ent_name -> get();
     
            #create the entry in the bb file
            $bb_base = "TLSE-data.bb";
            open(FILE,">>$bb_base") or die ("problem to open the bb file.");
            print FILE "\n";
    	print FILE $name;
    	#By default, at the TLSE creation, the workload is set to 0
    	print FILE ";0;";
            close FILE;
     
            $lb_name = $tlse_name -> Label(-text => "$name") -> pack(-side => 'top');
            #By default, at the TLSE creation, the workload is set to 0
            $lb_workload = $tlse_name -> Label(-text => "0") -> pack();
            $minus_button = $tlse_name -> Button(-text => "-", command => \&push_minus) -> pack(-side => 'left');
            $plus_button = $tlse_name -> Button(-text => "+", command => \&push_plus) -> pack(-side => 'right');
    }
     
    sub push_plus {
    }
     
    1;
    En fait, je souhaiterai via mes boutons + et - faire évoluer la valeur $lb_workload, bien sur en fonction du "TLSE" sur lequel je me trouve (et mettre à jour le fichier en // mais cela je devrais y arriver). J'ai tenté plusieurs choses mais sans succés.

    merci par avance

  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
    Voici ton code un peu refait. Pose des questions si besoin

    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/bin/perl
    use warnings;
    use strict;
    use Tk;
     
    my $mw = MainWindow->new();
    $mw->title("BB!");
    $mw->geometry("300x100");
     
    my $b_menu = $mw->Frame( -relief => 'groove', -borderwidth => 2 );
     
    my $menu_app = $b_menu->Menubutton(
      -text      => "File",
      -tearoff   => 0,
      -relief    => 'ridge',
      -menuitems => [
        [ 'command' => "Create new TLSE", -command => \&create_tlse ],
        [ 'command' => "Delete TLSE",     -command => \&delete_tlse ],
        [ 'command' => "Exit",            -command => sub { exit; } ]
      ]
    );
     
    $menu_app->pack( -side => 'left' );
    $b_menu->pack( -side => 'top', -anchor => 'n', -fill => 'x' );
     
    #Frame containing all TLSE
    my $all_tlse = $mw->Frame( -relief => 'raised', -borderwidth => 2 )->pack();
     
    my $end = $mw->Label(
      -relief => 'groove',
      -text   => "2010",
      -font   => '{Garamond} 10'
    )->pack( -side => 'bottom', -fill => 'both' );
     
    MainLoop;
     
    #---------------------Subfonction------------------------------
     
    sub create_tlse {
     
      my $tlse_creation = $mw->Toplevel();
      my $tlse_creation_title = $tlse_creation->Label( -text => "Create a new TLSE" )->pack();
     
      my $ent_name = $tlse_creation->Entry()->pack();
     
      my $valid_button = $tlse_creation->Button(
        -text    => "Create",
        -command => [ \&tlse, $ent_name ]
      )->pack( -side => 'left' );
      my $but_close = $tlse_creation->Button(
        -text    => "Close",
        -command => sub { destroy $tlse_creation; }
      )->pack();
     
      return;
    }
     
    sub tlse {
      my ($ent_name) = @_;
     
      #Frame TLSE
      my $tlse_name = $all_tlse->Frame(
        -relief      => 'groove',
        -borderwidth => 2
      )->pack( -side => 'left' );
      my $name = $ent_name->get();
     
      #create the entry in the bb file
      my $bb_base = "TLSE-data.bb";
      open( FILE, '>>', $bb_base ) or die("problem to open the bb file.");
      print FILE "\n";
      print FILE $name;
     
      #By default, at the TLSE creation, the workload is set to 0
      print FILE ";0;";
      close FILE;
     
      my $lb_name = $tlse_name->Label( -text => "$name" )->pack( -side => 'top' );
     
      #By default, at the TLSE creation, the workload is set to 0
      my $valeur_workload = 0;
      my $lb_workload     = $tlse_name->Label( -textvariable => \$valeur_workload )->pack();
      my $minus_button    = $tlse_name->Button(
        -text    => "-",
        -command => [ \&push_minus, \$valeur_workload ]
      )->pack( -side => 'left' );
      my $plus_button = $tlse_name->Button(
        -text    => "+",
        -command => [ \&push_plus, \$valeur_workload ]
      )->pack( -side => 'right' );
     
      return;
    }
     
    sub push_minus {
      my ($ref_valeur_workload) = @_;
     
      # deférencement et incrementation
      ${$ref_valeur_workload}--;
     
      return;
    }
     
    sub push_plus {
      my ($ref_valeur_workload) = @_;
     
      # deférencement et incrementation
      ${$ref_valeur_workload}++;
     
      return;
    }

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 84
    Points : 47
    Points
    47
    Par défaut
    Merci Djibril,

    Effectivement, cela fonctionne impec et je comprends bien ce que tu as implémenté.

    Par contre, je me pose une question.

    Comment identifier mes fenêtres crées afin de pouvoir les supprimer? en effet, je créé les "TLSE" en donnant un nom genre toto, puis titi.

    Comment supprimer "titi" par exemple avec une une sous-fonction delete (à partir de mon menu "Delete a TLSE")?
    Je voudrais rentrer par exemple titi et la fenêtre titi est supprimé.

    En fait, je pensais que pour les push_minus et push_plus, tu allais identifié la fenêtre et ainsi de suite, mais effectivement ce que tu as fait est bcp plus simple.
    mais du coup je ne sais pas comment identifier telle ou telle fenêtre.

    Par avance merci

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 84
    Points : 47
    Points
    47
    Par défaut
    Autre question!

    J'ai tenté le code suivant pour bloquer la valeur mais cela ne fonctionne pas!
    Ou est-ce que je me trompe? Dans le test de la valeur j'imagine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    sub push_minus {
      my ($ref_valeur_workload) = @_;
     
      if ($ref_valeur_workload > 0){
            ${$ref_valeur_workload}--;
      }
      elsif ($ref_valeur_workload = 0){
            my $message = $all_tlse->messageBox(-title=>'Message',
                    -message=>'The workload could not be negative!');
      }
     
      return;
    }
    par avance merci

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 84
    Points : 47
    Points
    47
    Par défaut
    oups, j'ai crié au loup trop vite
    j'ai trouvé mes erreurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    sub push_minus {
      my ($ref_valeur_workload) = @_;
     
      if (${$ref_valeur_workload} > 0){
            ${$ref_valeur_workload}--;
      }
      elsif (${$ref_valeur_workload} == 0){
            my $message = $all_tlse->messageBox(-title=>'Message',
                    -message=>'The workload could not be negative!');
      }
     
      return;
    }

  6. #6
    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
    Si ton problème est résolu, passe ton thread en résolu.

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 84
    Points : 47
    Points
    47
    Par défaut
    J'ai résolu mon dernier pb tout seul, mais je bloque tjs sur la méthode que je peux utiliser afin de récupérer le nom de la fenêtre.


    Je créé une fenêtre TLSE avec un nom comme "titi", ensuite je tente de mettre à jour le fichier et de modifier la valeur du workload dans le fichier en fonction du nom bien sur.
    Mais la ca ne marche pas, j'ai tenté le code ci-dessous pour la sub push_plus mais sans résultat.

    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
     
    #---------------------Subfonction------------------------------
     
    sub create_tlse {
     
      my $tlse_creation = $mw->Toplevel();
      my $tlse_creation_title = $tlse_creation->Label( -text => "Create a new TLSE" )->pack();
     
      my $ent_name = $tlse_creation->Entry()->pack();
     
      my $valid_button = $tlse_creation->Button(
        -text    => "Create",
        -command => [ \&tlse, $ent_name ]
      )->pack( -side => 'left' );
      my $but_close = $tlse_creation->Button(
        -text    => "Close",
        -command => sub { destroy $tlse_creation; }
      )->pack();
     
      return;
    }
     
    sub tlse {
      my ($ent_name) = @_;
     
      #Frame TLSE
      my $tlse_name = $all_tlse->Frame(
        -relief      => 'groove',
        -borderwidth => 2
      )->pack( -side => 'left' );
      my $name = $ent_name->get();
     
      #create the entry in the bb file
      open( FILE, '>>', $bb_base ) or die("problem to open the bb file.");
      print FILE "\n";
      print FILE $name;
     
      #By default, at the TLSE creation, the workload is set to 0
      print FILE ";0;";
      close FILE;
      my $value_name = $name;
      my $lb_name = $tlse_name->Label( -textvariable => \$value_name )->pack( -side => 'top' );
     
      #By default, at the TLSE creation, the workload is set to 0
      my $valeur_workload = 0;
      my $lb_workload     = $tlse_name->Label( -textvariable => \$valeur_workload )->pack();
      my $minus_button    = $tlse_name->Button(
        -text    => "-",
        -command => [ \&push_minus, \$valeur_workload, \$value_name ]
      )->pack( -side => 'left' );
      my $plus_button = $tlse_name->Button(
        -text    => "+",
        -command => [ \&push_plus, \$valeur_workload, \$value_name ]
      )->pack( -side => 'right' );
     
      return;
    }
     
    sub push_minus {
      my ($ref_valeur_workload) = @_;
     
      if (${$ref_valeur_workload} > 0){
            ${$ref_valeur_workload}--;
      }
      elsif (${$ref_valeur_workload} == 0){
            my $message = $all_tlse->messageBox(-title=>'Message',
                    -message=>'The workload could not be negative!');
      }
     
      return;
    }
     
    sub push_plus {
      my ($ref_valeur_workload) = $valeur_workload;
      my ($ref_value_name) = $value_name;
     
      ${$ref_valeur_workload}++;
     
      #update of the bb file
      open( FILE, '>>', $bb_base ) or die("problem to open the bb file.");
      while ( my $bb = <FILE> ) {
                    my ($workload, $tlse) = (split m/\;/, $bb);
                    if ($tlse eq ${$ref_value_name}){
                            $worload++;
                    }
            }
     
      ..... mise à jour du fichier
      return;
    }

  8. #8
    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
    Tu pourrais essayer de stocker le widget de ta fenêtre dans un hash afin de pouvoir la détruire ci besoin plus tard.

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    my %mes_fenetre;
    my $tlse_creation = $mw->Toplevel();
    $mes_fenetre{tlse} = $tlse_creation;
    # ...
    # ...
    Et plus loin dans ton programme, dans une procédure, la détruire si besoin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ( Exists $mes_fenetre{tlse} ) {
      $mes_fenetre{tlse}->destroy;
    }
    Voilou

  9. #9
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 84
    Points : 47
    Points
    47
    Par défaut
    je vais tenter cela, merci Djibril

  10. #10
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 84
    Points : 47
    Points
    47
    Par défaut
    je viens de tenter ce code mais cela ne fonctionne pas, la fenêtre ne disparait pas!
    Une idée d'où j'aurai pu faire la boulette?

    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
     
    #--------------------Configuration----------------------------
    my $bb_base = "B:\TLSE-data.bb";
     
    #-------------------------GUI---------------------------------
    use Tk;
     
    my $mw = MainWindow -> new();
    $mw -> title("BB!");
    $mw->geometry("300x120");
     
    my $b_menu = $mw -> Frame(-relief => 'groove', -borderwidth => 2);
     
    my $menu_app = $b_menu -> Menubutton (-text => "File",
                                    -tearoff => 0,
                                    -relief => 'ridge',
                                    -menuitems => [
                                                    ['command' => "Create new TLSE",-command => \&create_tlse],
                                                    ['command' => "Delete TLSE",-command => \&delete_tlse],
                                                    ['command' => "Exit",-command => sub {exit;}]
                                                  ]
                                    );
     
    $menu_app -> pack(-side => 'left');
    $b_menu -> pack(-side => 'top', -anchor => 'n', -fill => 'x');
     
    #Frame containing all TLSE
    my $all_tlse = $mw -> Frame(-relief => 'raised', -borderwidth => 2) -> pack();
     
    #Last line
    my $end = $mw -> Label(-relief => 'groove', -text => "2010", -font => '{Garamond} 10') -> pack (-side => 'bottom', -fill => 'both');
     
    #Load all TLSE already declared in the BB file and their workload
    init();
     
    my %the_tlse;
     
    MainLoop;
     
    #---------------------Subfonction------------------------------
     
    sub create_tlse {
     
      my $tlse_creation = $mw->Toplevel();
      my $tlse_creation_title = $tlse_creation->Label( -text => "Create a new TLSE" )->pack();
     
      my $ent_name = $tlse_creation->Entry()->pack();
     
      my $valid_button = $tlse_creation->Button(
        -text    => "Create",
        -command => [ \&tlse, $ent_name ]
      )->pack( -side => 'left' );
      my $but_close = $tlse_creation->Button(
        -text    => "Close",
        -command => sub { destroy $tlse_creation; }
      )->pack();
     
      $the_tlse{$ent_name} = $tlse_creation;
     
      return;
    }
     
    sub tlse {
      my ($ent_name) = @_;
     
      #Frame TLSE
      my $tlse_name = $all_tlse->Frame(
        -relief      => 'groove',
        -borderwidth => 2
      )->pack( -side => 'left' );
      my $name = $ent_name->get();
     
      #create the entry in the bb file
      open( FILE, '>>', $bb_base ) or die("problem to open the bb file.");
      print FILE "\n";
      print FILE $name;
     
      #By default, at the TLSE creation, the workload is set to 0
      print FILE ";0;";
      close FILE;
     
      my $lb_name = $tlse_name->Label( -text => "$name" )->pack( -side => 'top' );
     
      #By default, at the TLSE creation, the workload is set to 0
      my $valeur_workload = 0;
      my $lb_workload     = $tlse_name->Label( -textvariable => \$valeur_workload )->pack();
      my $minus_button    = $tlse_name->Button(
        -text    => "-",
        -command => [ \&push_minus, \$valeur_workload ]
      )->pack( -side => 'left' );
      my $plus_button = $tlse_name->Button(
        -text    => "+",
        -command => [ \&push_plus, \$valeur_workload ]
      )->pack( -side => 'right' );
     
      return;
    }
     
    sub push_minus {
      my ($ref_valeur_workload) = @_;
     
      if (${$ref_valeur_workload} > 0){
            ${$ref_valeur_workload}--;
      }
      elsif (${$ref_valeur_workload} == 0){
            my $message = $all_tlse->messageBox(-title=>'Message',
                    -message=>'The workload could not be negative!');
      }
     
      return;
    }
     
    sub push_plus {
      my ($ref_valeur_workload) = @_;
      ${$ref_valeur_workload}++;
     
      return;
    }
     
    sub init {
     
            #Load all TLSE already declared in the BB file and their workload
            my %init_bb;
            open(FILE,'<', $bb_base) or die ("problem to open the $bb_base file.");
            while ( my $bb = <FILE> ) {
                    if ( $bb !~ /^#/ ){
                             my ($workload, $tlse) = (split m/\;/, $bb);
                            $init_bb{$workload} = $tlse;
                    }
            }
     
            foreach (keys(%init_bb)){
            my $valeur_workload = $init_bb{$_};
            my $tlse_name = $all_tlse -> Frame(-relief => 'groove', -borderwidth => 2) -> pack(-side => 'left');
            my $lb_name = $tlse_name->Label( -text => "$_" )->pack( -side => 'top' );
            my $lb_workload     = $tlse_name->Label( -textvariable => \$valeur_workload )->pack();
            my $minus_button    = $tlse_name->Button(
                    -text    => "-",
                    -command => [ \&push_minus, \$valeur_workload ]
                    )->pack( -side => 'left' );
            my $plus_button = $tlse_name->Button(
                    -text    => "+",
                    -command => [ \&push_plus, \$valeur_workload ]
                    )->pack( -side => 'right' );
            }
     
            return;
    }
     
    sub delete_tlse {
     
      my $tlse_deletion = $mw->Toplevel();
      my $tlse_deletion_title = $tlse_deletion->Label( -text => "Delete a TLSE" )->pack();
     
      my $to_be_deleted = $tlse_deletion->Entry()->pack();
     
      my $valid_deletion = $tlse_deletion->Button(
        -text    => "Delete",
        -command => [ \&del, $to_be_deleted ]
      )->pack( -side => 'left' );
      my $deletion_close = $tlse_deletion->Button(
        -text    => "Close",
        -command => sub { destroy $tlse_deletion; }
      )->pack();
     
      #remove the entry from the hash $the_tlse{$ent_name} = $tlse_creation;
     
      return;
    }
     
    sub del {
      my ($to_be_deleted) = @_;
      my $tbd = $to_be_deleted->get();
     
      if ( Exists $the_tlse{$tbd} ) {
            $the_tlse{$tbd}->destroy;
      }
    }
    par avance merci

  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 : 499 184
    Points
    499 184
    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
    sub del {
      my ($to_be_deleted) = @_;
      my $tbd = $to_be_deleted->get();
     
      if ( Exists $the_tlse{$tbd} ) {
            print  "$tbd existe \n";
            $the_tlse{$tbd}->destroy;
      }
      else {
        print  "$tbd existe pas\n";
      }
    }
    tu verras que tu ne rentres pas dans le if. Ce qui est normal car tu cherches à fermer une fenêtre qui n'est plus ouverte

  12. #12
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 84
    Points : 47
    Points
    47
    Par défaut
    merqui! tout à fait, je me suis trompé lors de la création de l'entrée dans le hash

    en fait, il faut:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $the_tlse{$name} = $tlse_name;
    dans la fonction tlse et non create_tlse.
    Effectivement j'essayai de fermer une fenêtre déjà fermée

    ne m'en veut pas si le laisse le post ouvert, je vais maintenant tenter la mise à jour du fichier (bouton + et -) avec la même méthode et c'est pas dit que j'y arrive seul

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/06/2010, 15h45
  2. Command sql update dans datalist via image bouton ( vs2008-vb.net)
    Par JFLESUEUR dans le forum Développement Web avec .NET
    Réponses: 4
    Dernier message: 22/03/2010, 08h44
  3. Ajouter des champs à un formulaire via un bouton
    Par Stass dans le forum Langage
    Réponses: 11
    Dernier message: 08/09/2006, 17h02
  4. Ajouter des champs à un formulaire via un bouton
    Par Stass dans le forum Langage
    Réponses: 11
    Dernier message: 08/09/2006, 17h02
  5. Ajouter des champs a un formulaire via un bouton
    Par Stass dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 08/09/2006, 13h59

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