FAQ Perl/TkConsultez toutes les FAQ
Nombre d'auteurs : 3, nombre de questions : 86, dernière mise à jour : 24 mai 2013 Ajouter une question
Bienvenue sur la FAQ Perl/Tk. Cette FAQ a pour vocation de vous enseigner ou de vous faire revoir les notions de Perl/Tk. N'hésitez pas à utiliser le moteur de recherche.
Vous souhaitez participer à l'amélioration de cette FAQ, n'hésitez pas !! Commentez
Bonne lecture !
La création d'une case à cocher se fait à l'aide du Widget « Checkbutton ». Voici un exemple de code basique.
Code perl : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!/usr/bin/perl use strict; use warnings; use Tk; my $mw = MainWindow->new( -title => 'Case à cocher', -background => 'white', ); $mw->minsize( 400, 100 ); my $case = $mw->Checkbutton( -text => 'Une case', -background => '#ABC6E4', )->pack(qw/ -pady 10 /); MainLoop; |
Lorsque vous cochez ou non une case, une valeur par défaut est stockée par Perl/Tk. Elle vaut par défaut 0 si la case n'est pas cochée ou 1. Vous avez la possibilité de changer ces valeurs via l'utilisation des options
Code perl : | Sélectionner tout |
1 2 | -onvalue => '1', -offvalue => '0', |
- utilisation de l'option -variable;
Voici un code explicatif :
Code perl : | Sélectionner tout |
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 | #!/usr/bin/perl use strict; use warnings; use Tk; my $mw = MainWindow->new( -title => 'Case à cocher', -background => 'white', ); $mw->minsize( 400, 100 ); my $ValeurCase; my $case = $mw->Checkbutton( -text => 'Une case', -background => '#ABC6E4', -variable => \$ValeurCase, )->pack(qw/ -pady 10 /); my $bouton = $mw->Button( -text => 'Afficher valeur', -command => sub { if ( defined $ValeurCase ) { print "Valeur : $ValeurCase\n"; } else { print "La case n'a jamais été cochée\n"; } }, )->pack(qw/ -pady 10 /); MainLoop; |
Notre programme contient un bouton qui permet d'afficher le contenu de cette variable. Amusez-vous bien !
Tant qu'il n'y a pas eu au moins un clic sur la case à cocher, la variable est non définie, d'où le test dans notre exemple.
- Accéder directement à la valeur.
À partir de votre objet du Widget, vous pouvez directement accéder à la valeur « $case->{'Value'} ».
Code perl : | Sélectionner tout |
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 | #!/usr/bin/perl use strict; use warnings; use Tk; my $mw = MainWindow->new( -title => 'Case à cocher', -background => 'white', ); $mw->minsize( 400, 100 ); my $ValeurCase; my $case = $mw->Checkbutton( -text => 'Une case', -background => '#ABC6E4', )->pack(qw/ -pady 10 /); my $bouton = $mw->Button( -text => 'Afficher valeur', -command => sub { if ( defined $case->{'Value'} ) { print "Valeur : ", $case->{'Value'}, "\n"; } else { print "La case n'a jamais été cochée\n"; } }, )->pack(qw/ -pady 10 /); |
Le module vous propose d'autres méthodes intéressantes :
- select: qui permet de sélectionne une case à cocher ;
- deselect: qui permet de déselectionner une case à cocher ;
- toggle : de sélectionner ou déselectionner une case à cocher ;
- invoke : comme pour les boutons classique, elle permet d'invoquer l'option « -command » s'il y en avait une.
Pour en savoir plus, lisez la documentation du module Tk::CheckButton.
Voici ci-dessus un programme que vous pouvez tester.
Code perl : | Sélectionner tout |
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 | #!/usr/bin/perl use strict; use warnings; use Tk; my $mw = MainWindow->new( -title => 'Case à cocher', -background => '#ABC6E4', ); $mw->minsize( 400, 100 ); my $LabelQuestion = $mw->Label( -text => 'Qui a créé le langage Perl ? ', -background => '#ABC6E4', ); my $cc_james = $mw->Checkbutton( -text => 'James Gosling et Patrick Naughto', -command => sub { print "Action Checkbutton : James Gosling et Patrick Naughto\n"; }, -background => '#ABC6E4', -activebackground => '#ABC6E4', ); my $cc_wall = $mw->Checkbutton( -text => 'Larry Wall', -background => '#ABC6E4', -activebackground => '#ABC6E4', -command => sub { print "Action Checkbutton : Larry Wall\n"; }, ); my $cc_dvp = $mw->Checkbutton( -text => 'developpez.com', -background => '#ABC6E4', -activebackground => '#ABC6E4', -relief => 'flat', -command => sub { print "Action Checkbutton : developpez.com\n"; }, ); my $BoutonSelection = $mw->Button( -text => 'select', -command => sub { $cc_james->select(); $cc_wall->select(); $cc_dvp->select(); }, ); my $BoutonDeselection = $mw->Button( -text => 'deselect', -command => sub { $cc_james->deselect(); $cc_wall->deselect(); $cc_dvp->deselect(); }, ); my $BoutonInvoke = $mw->Button( -text => 'invoke', -command => sub { $cc_james->invoke(); $cc_wall->invoke(); $cc_dvp->invoke(); }, ); my $BoutonToggle = $mw->Button( -text => 'toggle', -command => sub { $cc_james->toggle(); $cc_wall->toggle(); $cc_dvp->toggle(); }, ); my $BoutonEtat = $mw->Button( -text => 'Réponse', -command => sub { my $etat_cc_james = (! $cc_james->{'Value'} or $cc_james->{'Value'} == 0) ? 'Non coche' : 'coche'; my $etat_cc_wall = (! $cc_wall->{'Value'} or $cc_wall->{'Value'} == 0) ? 'Non coche' : 'coche'; my $etat_cc_dvp = (! $cc_dvp->{'Value'} or $cc_dvp->{'Value'} == 0) ? 'Non coche' : 'coche'; print "Statut des trois boutons :\n"; print "\t- ccjames : $etat_cc_james\n"; print "\t- ccwall : $etat_cc_wall\n"; print "\t- ccdvp : $etat_cc_dvp\n"; }, ); $LabelQuestion->place( qw/ -x 10 -y 10/ ); $cc_james->place( qw/ -x 10 -y 35/ ); $cc_wall->place( qw/ -x 10 -y 60/ ); $cc_dvp->place( qw/ -x 10 -y 85/ ); $BoutonSelection->place( qw/ -x 10 -y 120/ ); $BoutonDeselection->place( qw/ -x 80 -y 120/ ); $BoutonInvoke->place( qw/ -x 150 -y 120/ ); $BoutonToggle->place( qw/ -x 220 -y 120/ ); $BoutonEtat->place( qw/ -x 290 -y 120/ ); MainLoop; |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.