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 !
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');
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")
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 |
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; |
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 !
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 çaLes 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 © 2024 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.