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 :

[Débutant] ajouter un boutton après une liste


Sujet :

Interfaces Graphiques Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 24
    Par défaut [Débutant] ajouter un boutton après une liste
    Bonjour,

    j'ai voulu retravailler un programme qui m'a été donné sur ce forum par Djibril

    code :

    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
    #!/usr/bin/perl
    use strict;
    use warnings;
    use Tk;
    use Tk::Listbox;
     
    my $fenetre_principale = MainWindow->new( -title => 'Boite de liste' );
     
    my $entete1 = $fenetre_principale->Label( -text => 'liste1' );
    my $liste1 = $fenetre_principale->Scrolled( 'Listbox', -scrollbars => 'osoe', );
    $liste1 = $fenetre_principale ->Listbox(-selectmode => 'extended') -> pack(-side => 'left', -fill => 'y');
    $liste1->insert( 'end', qw/jasmine jedai djibril stoyak bidulle autre/ );
    $liste1->selectionSet(0);
     
    my $entete2 = $fenetre_principale->Label( -text => 'liste2' );
    my $liste2 = $fenetre_principale->Scrolled( 'Listbox', -scrollbars => 'osoe', );
    $liste2 = $fenetre_principale ->Listbox(-selectmode => 'extended') -> pack(-side => 'left', -fill => 'y');
    $liste2->insert( 'end', qw/perl tk Qt4 wx gtk2/ );
     
    my $valide_ecrit = $fenetre_principale -> Button(
        -text => 'ecrit liste2')-> pack(-after => $liste2);
     
    my $bouton1vers2 = $fenetre_principale->Button(
        -text    => '>>',
        -command => sub {
     
            # lire element selectionner dans la boîte de liste 1
            my @elt_selectionnes = $liste1->curselection();
            foreach my $elt1 (@elt_selectionnes) {
     
                # Déplacement dans la liste 2
                $liste2->insert( 'end', $liste1->get($elt1) );
                print "Deplacement dans la liste 2 : ", $liste1->get($elt1), "\n";
     
                # suppression de la liste 1
                $liste1->delete($elt1);
            }
        },
    );
    my $bouton2vers1 = $fenetre_principale->Button(
        -text    => '<<',
        -command => sub {
     
            # lire element selectionner dans la boîte de liste 1
            my @elt_selectionnes = $liste2->curselection();
            foreach my $elt2 (@elt_selectionnes) {
     
                # Déplacement dans la liste 1
                $liste1->insert( 'end', $liste2->get($elt2) );
                print "Deplacement dans la liste 1 : ", $liste2->get($elt2), "\n";
     
                # suppression de la liste 2
                $liste2->delete($elt2);
            }
        },
    );
     
    #$fenetre_principale->Button( -text => 'Quitter', -command => sub {exit;},)-> pack( qw/ -pady 10 / );
     
    $entete1->grid( '-', $entete2 );
    $liste1->grid( $bouton1vers2, $liste2 );
    $liste1->grid( $bouton2vers1, $liste2 );
    $liste1->grid( -rowspan => 2 );
    $liste2->grid( -rowspan => 2 );
    $bouton1vers2->grid( -sticky => 's' );
    $bouton2vers1->grid( -sticky => 'n' );
     
    MainLoop;
    (fin du code)

    le but est d'écrire liste2 dans un fichier (mais je n'en suis pas encore là)
    Par rapport au code fourni par Djibril, j'ai juste ajouté les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    use Tk::Listbox;
    $liste1 = $fenetre_principale ->Listbox(-selectmode => 'extended') -> pack(-side => 'left', -fill => 'y');
    pour faire de la multi-sélection
    idem pour liste 2

    maintenant, je voudrais ajouter un bouton qui commande une validation,
    mais je ne parviens même pas à l'afficher et je n'ai pas de message d'erreur malgré use strict et use warnings : il s'agit de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $valide_ecrit = $fenetre_principale -> Button(
        -text => 'ecrit liste2')-> pack(-after => $liste2);
    merci pour votre attention

    cordialement

  2. #2
    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
    Attention dans le mélange des pack et grid.

    De plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $liste1 = $fenetre_principale->Scrolled( 'Listbox', -scrollbars => 'osoe', );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $liste1 = $fenetre_principale ->Listbox(-selectmode => 'extended') -> pack(-side => 'left', -fill => 'y');
    idem pour $liste2.

    Il faudrait aussi essayer de comprendre le code que tu avais eu.

  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
    La question Comment créer une boîte de liste ? a été mise à jour dans la FAQ Perl/Tk. Elle résoudra ton souci.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 24
    Par défaut
    Bonjour à tous en général et à Djibril en particulier,
    je m'apprêtais à reprendre mon post parce que j'ai compris l'incompréhension et mon erreur hier et découvert ta réponse ce matin.
    Autant pour moi, j'aurais du faire un travail de fond "méthodologique" plus intensif avant de poser cette question et à arriver tout seul à la conclusion de ne pas mélanger les grid et pack.
    Je suis également parvenu hier à écrire la sélection dans un fichier et me suis rendu compte à cette occasion que l'option -fill => 'y'
    est reconnue dans la version que j'utilise chez mon employeur mais pas dans celle que j'utilise chez moi. Je dispose sur mon PC perso de la version v5.10.1 à la fois sur les partitions XP32 et UBUNTU 10.10 de mon PC.
    Est-ce que tu confirmes cette remarque ? Il ne me semble pas avoir lu quoi que ce soit sur ce sujet. Donc, j'ai purement et simplement supprimer l'option -fill de manière à avoir le même code chez moi et au boulot. Ce n'est peut-être pas très propre, mais dans l'immédiat, c'est tout ce que j'ai trouvé.
    Je passe le problème en résolu même si ce que j'ai fait ne me satisfait pas totalement, mais je vais chercher un peu
    Merci pour le temps passé à débrouiller tous nos problèmes
    Cordialement

  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
    Que tu sois chez toi ou ton client, la version de ton Tk est la même. Et à une version prêt, de tout façon, ça ne change absolument rien.

    N'hésite pas à bien relire le gestionnaire d'espace dans la FAQ, il y a même un programme que tu peux récupérer et qui permet de comprendre le fonctionnement de pack. Pour ton souci, la FAQ y répond entièrement. N'hésite pas à poser des questions si tu ne comprends pas le code.

    Bon courage !!

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 24
    Par défaut
    par ailleurs, j'ai refait un copier-coller du code avec l'option -fill => 'y' et il fonctionne. J'ai donc du faire une autre bêtise.

    Je me rappellerai que certains messages peuvent induire en erreur comme celui-ci :

    bad option "fill": must be -after, -anchor, -before, -expand, -fill, -in, -ipadx, -ipady, -padx, -pady, or -side at /usr/lib/perl5/Tk/Widget.pm line 1218.
    at forumv.pl line 39

    ou le blocage de PERL quand on mélange indument des pack et des grid

    ça doit faire partie de l'aprentissage ...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/01/2007, 20h01
  2. Réponses: 16
    Dernier message: 19/11/2005, 17h47
  3. Réponses: 9
    Dernier message: 14/10/2005, 14h46
  4. Ajouter un valeur dans une liste modifiable
    Par ancylia dans le forum Access
    Réponses: 1
    Dernier message: 22/09/2005, 13h50
  5. Pb d'affichage apres une liste déroulante
    Par loic.440 dans le forum ASP
    Réponses: 13
    Dernier message: 19/01/2005, 15h28

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