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 !


SommaireHabillage et configuration des fenêtres TkComment habiller automatiquement toute mon application (2)
précédent sommaire suivant
 

La réponse ci-dessus est issue du livre Introduction à Perl/Tk qui n'est malheureusement plus disponible en français.

  • Configuration des couleurs

La méthode SetPalette permet à votre application d'utiliser automatiquement des couleurs en fonction d'une couleur donnée.

Code perl : Sélectionner tout
$widget->setPalette('couleur');
La couleur de fond de $widget sera de la couleur spécifiée et les couleurs de tous les autres widgets seront calculées à partir de celle-ci. Ainsi, si le contour d'un bouton est plus clair que le fond, il apparaîtra dans une teinte plus claire que la couleur choisie. Cette méthode affecte l'application entière, même si on l'a appelée sur un widget plutôt que sur la fenêtre.

Les couleurs de certaines options sont configurables ; il suffit de fournir le nom de l'option, puis la couleur que l'on souhaite lui associer. Le fragment de code suivant, par exemple, met en rouge l'avant-plan de l'application et en bleu le fond :

Code perl : Sélectionner tout
$b->setPalette("background" => "blue", "foreground" => "red");
  • Configuration de couleur prédéfinie

La méthode bisque utilise la configuration de couleur "bisque" pour toute l'application. L'appel $widget->bisque() est équivalent à $widget->setPalette("bisque")

Mis à jour le 11 décembre 2010 djibril

Il n'existe pas de thème en Perl Tk permettant de changer l'aspect de l'interface graphique. Dans une application graphique, le plus important n'est pas le rendu et sa beauté, mais d'abord le résultat que l'on attend, donc son but. Néanmoins, il est toujours agréable de changer l'habillage de ses fenêtres, de ses widgets !

L'aspect d'une interface graphique dépend d'abord du système d'exploitation sous lequel tourne l'application. Le rendu sera différent que l'on soit sous Windows 2000, XP, Vista, Seven, Linux, Mac, BSD, etc. Mais il est tout de même possible de changer les couleurs de nos widgets, les épaisseurs des bordures...

Pour changer l'aspect de nos widgets, il faut modifier soi-même à chaque création d'un widget les options -background, -foreground, -disabledbackground, -highlightbackground... De plus, il faut vérifier dans la documentation de chaque widget la disponibilité des options. Ce travail peut être fastidieux lorsque notre application contient plusieurs widgets.

Pour effectuer un changement global à notre application, nous pouvons utiliser la méthode SetPalette. Cette méthode est efficace, mais le rendu obtenu n'est pas toujours celui souhaité. De plus, il est impossible de le personnaliser. Une autre technique consiste à utiliser le module standard de Tk Tk::CmdLine. Nous n'allons pas expliquer son fonctionnement qui n'est pas toujours évident, mais sachez qu'il est efficace et permet le chargement de fichier, mais il ne propose aucun habillage par défaut.

Il existe actuellement Tk::Dressing qui propose quelques thèmes (ou plutôt habillages) par défaut. Vous devez l'installer pour l'utiliser. Il permet également une importation de votre propre thème en chargeant un fichier .ini dans lequel vous aurez mis les options voulues pour vos widgets. Ce fichier est de ce type.

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[BrowseEntry] 
-background: #A8A8A8 
-foreground: #FFFFFF 
-disabledbackground: #A8A8A8 
-disabledforeground: #4E4E4E 
 
[Button] 
-activebackground: #686868 
-background: #686868 
-foreground: #FFFFFF 
-disabledforeground: #414141 
-activeforeground: #FFFFFF 
 
[Canvas] 
-background: #A8A8A8
Il est possible de proposer un thème au propriétaire du module afin qu'il puisse l'y intégrer. Ce module est simple d'utilisation et applique le thème choisi à un widget voulu (et ses enfants). Ainsi, vous pouvez avoir plusieurs widgets avec un habillage différent.

Voici un exemple d'utilisation du module issu de la documentation officielle.

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
#!/usr/bin/perl 
use warnings; 
use strict; 
use Tk; 
use Tk::Dressing; 
  
use Tk::BrowseEntry; 
  
my $TkDressing = Tk::Dressing->new(); 
  
my $mw = MainWindow->new( -title => "Dressing widget", ); 
$mw->minsize( 300, 100 ); 
  
$mw->Button( -text => 'Close', )->pack(qw/ -side bottom -padx 10 -pady 10 /); 
  
my $BrowseEntryTheme = $mw->BrowseEntry( 
  -label   => "Select a theme : ", 
  -state   => 'readonly', 
  -choices => [ 'clear dressing', sort $TkDressing->get_all_theme ], 
)->pack; 
  
my $Message = "Hello everybody\n\nWelcome to Perl/Tk and Tk::Dressing\n\n"; 
$mw->Label( -text => $Message,     -anchor => 'center' )->pack(qw/ -side top -padx 10 -pady 10 /); 
$mw->Label( -text => 'Example : ', -anchor => 'center' )->pack(qw/ -side left -padx 10 -pady 10 /); 
$mw->Entry( -text => 'test', )->pack(qw/ -side left -padx 10 -pady 10 /); 
  
$BrowseEntryTheme->configure( 
  -browse2cmd => sub { 
    my $theme = $BrowseEntryTheme->Subwidget('entry')->get; 
    if ( $theme eq 'clear dressing' ) { $TkDressing->clear($mw); return; } 
    $TkDressing->design_widget( 
      -widget => $mw, 
      -theme  => $theme, 
    ); 
  }, 
); 
  
MainLoop;
Avec ce code, nous avons testé quatre thèmes fournis par le module. L'image ci-dessous montre l'habillage par défaut de la fenêtre Tk suivi des quatre thèmes.



On peut constater que l'on a un rendu complètement différent sans avoir à configurer à la main les différents widgets. N'hésitez pas à utiliser ce module !

Mis à jour le 11 décembre 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.