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 !
Tk est une bibliothèque d'interfaces graphiques multiplateforme qui trouve son origine dans Tcl/Tk. Elle s'interface avec plusieurs langages tels Perl, Ruby, R... L'extension Tk de Perl (Perl/Tk) nous permet de créer facilement des interfaces graphiques à l'intérieur des programmes Perl. Elle s'installe très facilement et c'est ensuite à vous de jouer.
A l'origine, Perl n'était pas conçu pour créer des interfaces graphiques, mais pour travailler en console. Par la suite, il a évolué grâce à une grande communauté de développeurs qui fait évoluer ce langage. Une extension Tk a ainsi été créée.
Elle trouve son origine dans Tcl/Tk et a été adaptée par Nick Ing-Simmons afin d'être utilisable avec Perl. Il n'est absolument pas utile d'installer Tcl pour faire du Perl/TK.
A noter qu'il existe maintenant de nombreux modules du package de Tk qui vous permettent de faire des interfaces sympathiques.
Oui, Tk n'est pas la seule extension de Perl permettant de faire des interfaces graphiques.
Il existe aussi des extensions telles :
- Glade
- Gtk2
- Gtk2::GladeXML
- Java::Swing Association à Perl
- Qt4
- Prima
- tkx
- vptk
- wxPerl
- Win32::GUI
- ...
Mais cette FAQ n'abordera que Tk, si vous avez de bonnes compétences dans le domaine de ces autres extensions, faites-le nous savoir ! Vous pourrez toujours créer des articles sur ces extensions afin d'en convertir certains !
Voici un sondage sur l'utilisation des modules en Perl sur les interfaces graphiques.
C'est très simple. Dans un premier temps, vérifiez si Perl Tk est déjà installé sur votre machine.
Ouvrez une console DOS ou linux et tapez ce code :
Code : | Sélectionner tout |
perl -MTk -e ""
Code : | Sélectionner tout |
Can't locate Tk.pm in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib .) at -e line 1. BEGIN failed--compilation aborted at -e line 1.
Pour l'installer :
Code : | Sélectionner tout |
ppm install Tk
Code : | Sélectionner tout |
perl -MCPAN -e 'install Tk'
Vous avez également cet article : Installer Tk sur une distribution de Perl récente
Pour débuter en Perl/Tk, vous n'avez pas besoin de maîtriser Perl. Il est recommandé de connaître au moins les bases du langage.
Voici un tout premier script :
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 | #!/usr/bin/perl use warnings; use strict; use Tk; # Appel du module Tk # Programme principal # Création de la fenêtre my $fenetre = new MainWindow( -title => 'Première fenêtre Tk', -background => 'white', ); # Taille minimale de ma fenêtre $fenetre->minsize( 300, 100 ); my $message_accueil = "Bonjour tout le monde\n\nWelcome dans le monde magnifique de Perl/Tk\n\n"; # Affichage d'un texte my $label_accueil = $fenetre->Label( -text => $message_accueil, -background => 'white', )->pack(); # Affichage d'un bouton pour fermer la fenêtre my $bouton = $fenetre->Button( -text => 'Ferme la fenêtre', -command => sub { exit; }, )->pack(); MainLoop; # Obligatoire |
Un widget (ou gadget en français) est un composant d'une interface graphique. Un widget est une fenêtre (Window), un bouton, une liste, un champ de saisie, un cadre, un menu déroulant...
Il représente tout élément graphique permettant de créer une interface graphique.
En Perl/Tk, vous entendrez généralement parler du widget Button (pour les boutons), du widget Frame (pour créer des cadres), etc. Chacun de ces widgets est créé sur une fenêtre (MainWindow) qui est aussi un widget.
Classiquement, on utilise Perl via une console. La seule interaction entre l'utilisateur et le programme est le clavier.
En utilisant une interface graphique, l'utilisateur peut interagir via la souris et le gestionnaire de fenêtres (la croix sur la barre par exemple).
En Perl/Tk, toutes les entrées sont définies en évènements (clic ou presse-bouton, etc.). Ces derniers sont traités en boucle de gestion d'événements (event loop).
La boucle d'évènements est lancée par la fonction MainLoop. Il est donc important de ne pas oublier de spécifier cette fonction dans vos programmes Perl/Tk. Sinon, votre script vous rendra la main après quelques secondes sans avoir affiché de fenêtres.
Tout ce qui se trouve avant MainLoop concerne la configuration de votre interface.
Tout ce qui se trouve après sera exécuté uniquement après la destruction de la fenêtre via la méthode destroy ( $fenetre->destroy ). Bien évidemment, les procédures que vous écrirez seront définies après le MainLoop et pourront être appelées avant.
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 39 | #!/usr/bin/perl use warnings; use strict; use Tk; # Appel du module Tk # Programme principal # Création de la fenêtre my $fenetre = new MainWindow( -title => 'Première fenêtre Tk', -background => 'white', ); # Taille minimale de ma fenêtre $fenetre->minsize( 300, 100 ); my $message_accueil = "Bonjour tout le monde\n\nWelcome dans le monde magnifique de Perl/Tk\n\n"; # Affichage d'un texte my $label_accueil = $fenetre->Label( -text => $message_accueil, -background => 'white', )->pack(); # Affichage d'un bouton pour fermer la fenêtre my $bouton = $fenetre->Button( -text => 'Détruire la fenêtre', -command => \&detruire_fenetre, )->pack(); MainLoop; # Obligatoire # Ce code s'exécute à la destruction de la fenêtre print 'Affichage après MainLoop - fenêtre détruite'; sub detruire_fenetre { $fenetre->destroy; return; } |
N.B. Si vous mettez un exit; dans la procédure detruire_fenetre, l'affichage du message ne se fera pas car le script se terminera à l'appel de l'exit.
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.