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 :

Conserver la taille initiale d'un frame


Sujet :

Interfaces Graphiques Perl

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Par défaut Conserver la taille initiale d'un frame
    Bonjour,

    J'ai créé un frame de 200 pixels de haut. Mais dès que j'insère un widget à l'intérieur, mon frame s'adapte à la taille de son contenu.
    Je souhaite que la taille du frame reste constante car j'ai mis des bordures
    et je voudrais que ça ne bouge pas.

    Puis résoudre ce pb simplement ?
    Merci

    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
     
    sub listerFichier {
      my $roText ;
     
      $f = $frameCentral->Frame(-background => 'white', -height => 200)->pack(-fill => 'both', -expand => 1) ;
      $f->Button( -text => 'Choisir le répertoire à lister',
                  -command => [ \&choisirRepertoire , \$roText ]
                 )->pack(-fill => 'both') ;
     
      # Hauteur en nombre de lignes uniquement
      print "Hauteur frameCentral avant : " . $frameCentral->height . "\n";
     
      $roText = $f->Scrolled('ROText', -height => 10, -width=> 40, -scrollbars => 'osoe')->pack ;
     
      #$frameCentral->configure(-height => 200) ;
     
      $mw->update ;
      print "Hauteur frameCentral après : " . $frameCentral->height . "\n";
     
    }

  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
    Cela provient de tes options de ton pack associé au frame :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -fill => 'both', -expand => 1
    Je te laisse un peu chercher, relis la FAQ Perl/tk sur ces 2 options et tu comprendras

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Par défaut
    ouah c'est vache !

  4. #4
    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
    Citation Envoyé par devel360 Voir le message
    ouah c'est vache !
    Cherche un peu, si tu ne trouves pas, on est là

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Par défaut
    J'ai dégraissé mon code pour tester + facilement. Voici un exemple testable.
    C'est le fait de rajouter le Button qui rétércit le frame.
    Je pense avoir compris le role de -fill et -expand et je ne vois pas trop quoi faire, ni trop ou chercher ds la FAQ.

    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
     
    use Tk ;
     
    # Cadrer avec un frame
    $mw = MainWindow->new( -title => q/Annuaire d'entreprise/, -background => 'white')  ;
     
    # Largeur x Hauteur
    $mw->geometry('600x600') ;
     
    $mw->setPalette('powder blue') ;
    #$mw->chooseColor ;
     
    $frameMenu = $mw->Frame(-background => 'pink', -height => '100')->pack(-fill => 'both') ;
     
    # $frameCentral
    # Le fait de mettre une hauteur rend le frame visible même si ne contient rien
    $frameCentral = $mw->Frame( -height => 300, -relief => 'groove', -borderwidth => 2, -background => 'green' )
                                ->pack(-fill => 'both') ; 
     
     
    $f = $frameCentral->Frame(-background => 'white', -height => 300)->pack(-fill => 'both') ;
     
     
    #
     
    # Commenter / Décommenter cette ligne => chnage la taille du frame
    $f->Button( -text => 'Choisir le répertoire à lister' )->pack() ;
     
     
    MainLoop ;

  6. #6
    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
    tu n'utilises pas de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    use warnings;
    use strict;
    pas bien. Bon je regarde ton code.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Par défaut
    Si, si, j'utilise tout bien comme il faut . J'ai juste épuré.

  8. #8
    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
    Bon, je me suis arraché les cheveux car je ne me souvenais plus :mouarf:. Bon voici la solution. Il faut utiliser la méthode packPropagate de (Tk::Pack) pour empêcher qu'un cadre ne recalcule dynamiquement sa taille.

    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
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    use Tk;
     
    # Cadrer avec un frame
    my $mw = MainWindow->new( 
    -title => "Annuaire d'entreprise", 
    -background => 'white' 
    );
     
    # Largeur x Hauteur
    $mw->geometry('600x600');
     
    $mw->setPalette('powder blue');
     
    #$mw->chooseColor ;
     
    my $frameMenu = $mw->Frame(
      -background => 'pink',
      -height     => '100'
    )->pack( -fill => 'both' );
     
    # $frameCentral
    # Le fait de mettre une hauteur rend le frame visible même si ne contient rien
    my $frameCentral = $mw->Frame(
      -height      => 300,
      -relief      => 'groove',
      -borderwidth => 5,
      -background  => 'green'
    )->pack( -fill => 'both' , -expand => 0,  );
    $frameCentral->packPropagate(0);
     
     
    # Commenter / Décommenter cette ligne => chnage la taille du frame
    $frameCentral->Button( -text => 'Choisir le répertoire à lister' )->pack();
     
    MainLoop;

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Par défaut
    Un grand merci Djibril, je n'aurais pas trouvé aussi rapidement tout seul.
    Il y a tellement de détail à mémoriser mais ça commence à rentrer.

  10. #10
    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
    Citation Envoyé par devel360 Voir le message
    Un grand merci Djibril, je n'aurais pas trouvé aussi rapidement tout seul.
    Il y a tellement de détail à mémoriser mais ça commence à rentrer.
    N'hésite pas à compléter la liste ici.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 31
    Par défaut
    Que faut il faire exactement par rapport à la FAQ ?
    Je clique sur FAQ et je rajoute ma question + ta réponse ?
    Merci

  12. #12
    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
    NON .

    En fait, c'est moi qui la fait régulièrement évoluer. Lorsque vous avez des questions qui pourraient être intéressantes de mettre dans la FAQ perl TK ou même Perl, il faut poster un message dans le poste FAQ Perl/Tk du sous forum Interfaces Graphiques ou dans le poste FAQ et rubrique Perl officielles !!! du sous forum langage.

    Ces deux postes me permettent de garder une traçabilité des demandes et ensuite, j'essaye de répondre à ces questions pour les mettre dans les FAQs. Bien évidemment, si vous avez également des réponses à ses questions, n'hésitez pas non plus.

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

Discussions similaires

  1. AUI maximize et restauration taille initiale
    Par erbri2 dans le forum wxWidgets
    Réponses: 1
    Dernier message: 27/08/2008, 14h27
  2. [JScrollPane] Probleme de taille initiale d'un JPanel
    Par bulbo dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 13/08/2007, 13h52
  3. stringstream : augmenter la taille initiale du buffer
    Par jeanmarcL dans le forum SL & STL
    Réponses: 2
    Dernier message: 17/04/2007, 21h10
  4. [VB6]Taille limite d'une frame en hauteur
    Par Sephy dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 07/06/2006, 20h04
  5. [c++] Tableau avec taille initiale dynamique
    Par mister3957 dans le forum C++
    Réponses: 15
    Dernier message: 22/11/2005, 11h33

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