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

GTK+ Discussion :

[Perl] Problème de Checkbutton


Sujet :

GTK+

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Par défaut [Perl] Problème de Checkbutton
    Bonjour tout le monde,
    J'ai un petit soucis avec les checkbuttons. Voici mon script qui doit gerer la suppression d'utilisateur avec (ou non) la suppression de son compte personnel :

    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
    #!/usr/bin/perl -w
     
    use Gtk2 '-init';
    use constant TRUE => 1 ;
    use constant FALSE => 0;
     
    #script
    my $window = Gtk2::Window->new( "toplevel" ) ;
    $window->set_default_size( 300 , 100 ) ;
    $window->set_title( "Supression d'utilisateurs" ) ;
    $window->signal_connect( "delete_event" , sub {Gtk2->main_quit ;}) ;
    $window->set_border_width( 15 ) ;
     
    my $vbox = Gtk2::VBox->new(FALSE,0);
    $window->add($vbox);
    $vbox->show();
     
    my $entry = Gtk2::Entry->new() ;
    my $entry1 = Gtk2::Entry->new();
    $entry->signal_connect( "activate" , \&enter_callback, $entry ) ;
    $entry->set_text( "Veuillez rentrer un utilisateur" ) ;
    $entry->select_region( 0 , length( $entry->get_text() ) ) ;
    $vbox->pack_start($entry,TRUE,TRUE,0);
     
    $entry1->show();
    $entry->show() ;
    $window->show() ;
     
    #fin_script
     
    $button = Gtk2::CheckButton->new("Supprimer le repertoire personnel");
    $button->signal_connect( "clicked" , \&Event_clicked ) ;
    $vbox->add( $button ) ;
    $button->show() ;
     
    $window->show() ;
     
    Gtk2->main ;
     
    sub enter_callback
    {
    my ( $widget, $entry ) = @_ ;
    my $entry_text = $entry->get_text();
    print( "Vous venez de supprimer l'utilisateur : $entry_text\n" ) ;
    #system "userdel $entry_text";
    }
    Le problème que je recontre c'est que lorsque je clique sur le checkbutton il m'apelle donc la fonction \&Event_Clicked. Cependant c'est la meme fonction lors du cochage et du décochage de la case.
    Avez vous une idée qui puisse me faire avancer dans mon projet?
    ( je travaille en perl-gtk2 )
    Merci de vos reponses, et a bientôt.

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,

    Tu dois avoir la fonction $button->get_state () qui te renvoie l'état du bouton

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Par défaut
    Merci beaucoup pour la rapidité de ta réponse.
    "$button->get_state ()" est une fonction?

    Faut-il que je place un " $vbox->pack_start( $button, TRUE, TRUE, 0 ) ;" suivit de get_state() afin de récuperer ça valeur? je suis débutant en gtk2 donc j'ai un peu de mal...

    Merci,
    Bonne journée.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 7
    Par défaut
    Bonjour la fonction que tu cherches est : get_active() ;

    une manière de l'employer :

    ( Lier la fonction avec le signal connect.. perso j'utilise l'événement "toggled" pour se faire..)

    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
     
    sub select_jour
    {
     
    	my $widget_tmp = shift;
     
    	# On recupere l'etat (coche ou non) et le nom du bouton appelant 
    	my $etat = $widget_tmp->get_active();
    	my $jour_tmp = $widget_tmp->label ;
     
    	print "$etat\n";
    	print "$jour_tmp\n";
     
    	#ecriture dans la table de hash des jours 
    	$jours_choisis{$jour_tmp} = $etat;
     
    }
    Voili. en espérant que ça aide.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Par défaut
    Merci beaucoup, je vais étudier se que tu m'as donné se soir. Bonne soirée

Discussions similaires

  1. [PERL] problème tri de tableau
    Par LE NEINDRE dans le forum Langage
    Réponses: 2
    Dernier message: 31/08/2005, 15h42
  2. Réponses: 5
    Dernier message: 31/08/2005, 10h05
  3. [perl]Problème tableau indexé
    Par LE NEINDRE dans le forum Langage
    Réponses: 8
    Dernier message: 25/08/2005, 21h24
  4. [PERL] problème désallocation de variable
    Par LE NEINDRE dans le forum Langage
    Réponses: 11
    Dernier message: 24/08/2005, 10h07
  5. [PERL] Problème lecture/écriture dans un fichier
    Par LE NEINDRE dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 13h15

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