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 !


SommaireTous les widgetsLes cadres (Frame, Pane) (4)
précédent sommaire suivant
 

Un cadre est un support sur lequel vous pouvez placer des widgets (bouton, texte...). Il est aussi très utilisé pour gérer l'alignement des widgets lorsque l'on utilise le gestionnaire d'espace pack. Sachez aussi qu'un cadre est invisible tant qu'il ne contient aucun widget. La création d'un cadre est très simple, il suffit d'utiliser le widget Tk::Frame.

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
#!/usr/bin/perl 
use strict; 
use warnings; 
  
use Tk; 
  
my $fenetre_principale = MainWindow->new( -title => 'Cadres' ); 
$fenetre_principale->minsize(300,300); 
  
my $cadre1 = $fenetre_principale->Frame( 
  -background =>  '#CCCCFF', 
)->pack( qw/ -fill both -expand 1/ ); 
$cadre1->Label( -text => 'text1 cadre1' )->pack( -side => 'left'); 
$cadre1->Label( -text => 'text2 cadre1' )->pack( -side => 'right'); 
  
my $cadre2 = $fenetre_principale->Frame( 
  -background =>  'red', 
)->pack( qw/ -fill x/ ); 
$cadre2->Button( -text => 'quitter', -command => sub { exit;} )->pack(); 
  
  
MainLoop;
Nous avons utilisé ici deux cadres

Mis à jour le 31 août 2009 djibril

Un cadre légende ou LabFrame est identique à un cadre. Il est nécessaire de faire appel au module Tk::LabFrame, sinon vous aurez un message d'avertissement. Par contre il est inutile de l'installer car il est présent dans le core de Tk.

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
#!/usr/bin/perl 
use strict; 
use warnings; 
  
use Tk; 
use Tk::LabFrame; 
  
my $fenetre_principale = MainWindow->new( -title => 'Cadres' ); 
$fenetre_principale->minsize(300,300); 
  
my $cadre1 = $fenetre_principale->LabFrame( 
  -label => 'Mon titre cadre', 
  -background =>  '#CCCCFF', 
)->pack( qw/ -fill both -expand 1/ ); 
$cadre1->Label( -text => 'text1 cadre1' )->pack( -side => 'left'); 
$cadre1->Label( -text => 'text2 cadre1' )->pack( -side => 'right'); 
  
my $cadre2 = $fenetre_principale->Frame( 
  -background =>  'red', 
)->pack( qw/ -fill x/ ); 
$cadre2->Button( -text => 'quitter', -command => sub { exit;} )->pack(); 
  
MainLoop;
Nous avons utilisé ici deux cadres

Mis à jour le 31 août 2009 djibril

Il est possible de créer un cadre contenant une barre de défilement. C'est très pratique lorsque l'on a beaucoup d'éléments à afficher dans une fenêtre. On a l'habitude d'utiliser scrolled avec les widgets Text, mais avec Frame, ça ne fonctionne pas !! La solution est d'utiliser le widget Tk::Pane. Il fournit un cadre scrollable ! Il faut charger le module Tk::Pane, mais il est inutile de l'installer car il est présent dans le core de Perl/Tk.

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
#!/usr/bin/perl 
use strict; 
use warnings; 
  
use Tk; 
use Tk::Pane; 
  
my $fenetre_principale = MainWindow->new( -title => 'Pane' ); 
$fenetre_principale->minsize(300,300); 
  
my $pane = $fenetre_principale->Scrolled('Pane',  
  -scrollbars => 'sw', 
  -sticky => 'nswe', 
  -background =>  '#CCCCFF', 
)->pack( qw/ -fill both -expand 1/ ); 
$pane->Frame; 
  
$pane->Label( -text => 'text1 cadre1' )->pack( -side => 'left'); 
$pane->Label( -text => 'text2 cadre1' )->pack( -side => 'right'); 
  
my $cadre2 = $fenetre_principale->Frame( 
  -background =>  'red', 
)->pack( qw/ -fill x/ ); 
$cadre2->Button( -text => 'quitter', -command => sub { exit;} )->pack(); 
  
MainLoop;
Vous remarquerez que nous utilisons l'option -sticky qui est utile si le cadre est plus grand que l'espace disponible. C'est le même principe que le gestionnaire d'espace grid. Pensez aussi à utiliser la méthode Frame. $pane->Frame;

Mis à jour le 31 août 2009 djibril

Lorsque vous créez un cadre avec une taille donnée, à l'insertion de widgets à l'intérieur du cadre, ce dernier réadapte automatiquement sa taille en fonction du contenu. Pour désactiver ce comportement, il faut utiliser les méthodes du gestionnaire d'espaces. Si vous utilisez pack, utiliser la méthode packPropagate avec 0 ou off en argument.

Code perl : Sélectionner tout
1
2
3
$cadre->packPropagate(0); 
# ou  
$cadre->packPropagate('off');
Si vous utilisez grid, utiliser la méthode gridPropagate avec 0 ou off en argument.

Code perl : Sélectionner tout
1
2
3
$cadre->gridPropagate(0); 
# ou  
$cadre->gridPropagate('off');

Mis à jour le 28 juin 2010 djibril

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 ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les 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 © 2019 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.