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 :

Perl Scrollbar + listbox


Sujet :

Interfaces Graphiques Perl

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Par défaut Perl Scrollbar + listbox
    Bonjour à tous,

    Je programme sous perl et je réalise un petit projet qui dans deux listebox va ajouter des paramètres. La liste box grandie énormément et pour cela j'ai voulu mettre une scrollbar pour garder une taille correcte. LE problème c'est que j'ai deux listebox qui grandissent à la même vitesse et je voudrais que ces deux listbox aient une taille fixe et que la scroll bare face défiler les deux listbox en même temps.

    Pour ceux qui ne verrait pas voici un petit schéma :


    Pour les informations complémentaires, pour des soucis de conceptions j'utilise une fonction particulière qui remplie la listebox d'éléments. J'ai donc pensé à mettre dans la fonction juste après les fonctions d'insertions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		$lstF->insert('end', $toInser[$i]);
    			$lstS->insert('end', $toInser[$i]);
     
     
    			$scrollbar_1->configure(-command => [yview => $lstF]);	
    			$lstF->configure(-yscrollcommand => ['set', $scrollbar_1]);
    			$lstS->configure(-yscrollcommand => ['set', $scrollbar_1]);
    Bien évidement ca n'a pas marché, je vous fournis au passage les constructions des widgets :


    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
     
     
    	my($listbox_1) = $root->Listbox (
    		-height => '0',
    		-width => '0',
    	);
     
    	my($listbox_2) = $root-> Listbox (
    		-height => '0',
    		-width => '0',
    	);
     
    	my($scrollbar_1) = $root-> Scrollbar (
    		-orient => "v",
    		-command => [yview => $listbox_1],
    	);
    Et :

    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
     
    $scrollbar_1->grid(
    		-in => $root,
    		-column => '4',
    		-row => '5',
    		-sticky => 'ns'
    	);
    	$listbox_2->grid(
    		-in => $root,
    		-column => '1',
    		-row => '5',
    		-sticky => 'nesw'
    	);
    	$listbox_1->grid(
    		-in => $root,
    		-column => '2',
    		-row => '5',
    		-columnspan => '2',
    		-sticky => 'nesw'
    	);
    Je rappel que le premier bout de code est issue d'une fonction et que les deux autres sont issue de la même portée dynamique.

    Donc la question est en deux partie :
    Comment figer la taille des listbox ?
    Comment faire en sorte que la scrollbar sur le côté régisse les deux widgets ?

    Merci à tous de votre attention.

  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
    Bonjour,
    • Comment figer la taille des listbox ?
      Il faut donner à tes listbox une taille car si tu laisses à 0 ou met une valeur < 0, elles seront aussi larges que l'élément le plus long.





    Voici un exemple de 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
    #!/usr/bin/perl
    use strict;
    use warnings;
    use Tk;
    use utf8;
    my $mw = new MainWindow(
      -title      => '2listes et une barre',
      -background => 'white',
    );
     
    $mw->Label( -text => "scroller 2 liste avec une barre\n\n" )->pack(qw / -side top /);
     
    # Création barre de défilement
    my $defilement_v = $mw->Scrollbar()->pack(qw/ -side left -fill y/);
     
    # Création de 2 list
    my $list1 = $mw->Listbox(
      -width          => 20,
      -takefocus      => 1,
      -yscrollcommand => [ 'set', => $defilement_v ],
    )->pack(qw/ -side left -fill y -expand 0 /);
    my $list2 = $mw->Listbox(
      -width          => 20,
      -takefocus      => 1,
      -yscrollcommand => [ 'set', => $defilement_v ],
    )->pack(qw/ -side left -fill y -expand 0 /);
     
    $mw->Label( -text =>
        "Voici 2 listes reliées à une seule barre de défilement. Ces 2 listes ont une taille fixe et le texte est tronqué s'il est trop long.",
    )->pack(qw/ -side left -fill both -expand 1 /);
     
    # les listes doivent communiquer avec la barre
    $defilement_v->configure(
      -command => sub {
        $list1->yview(@_);
        $list2->yview(@_);
      }
    );
     
    my @text  = qw/ r gf hgd dgfd gdg AZERTYUIOPQSDFGHJKLMWXCVBN hgfdgdgfdgfdfgsfqssg 1 2 3 4 5/;
    my @text2 = ( 1 .. 200 );
    $list1->insert( 'end', @text );
    $list2->insert( 'end', @text2 );
     
    MainLoop;

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 10
    Par défaut
    Merci à vous, problème résolu et bien résolu. Merci pour le temps passé à me répondre.

    Cordialement.

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

Discussions similaires

  1. ScrollBar, ListBox et GroupBox
    Par Lelio1407 dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 02/12/2009, 10h14
  2. Suppression Scrollbar ListBox
    Par mdordenart dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 26/06/2009, 10h55
  3. [Perl/Tk] Listbox à plusieurs colonnes
    Par Kishin dans le forum Interfaces Graphiques
    Réponses: 8
    Dernier message: 10/03/2009, 14h10
  4. définir manuellement position scrollbar listbox
    Par xx_FiFty_xx dans le forum Windows Forms
    Réponses: 1
    Dernier message: 06/06/2008, 12h42
  5. [vba E] Scrollbar listbox
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 26/07/2006, 22h33

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