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 !


SommaireIntroduction généraleIntroduction à Perl/Tk (8)
précédent sommaire suivant
 

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.

Mis à jour le 9 décembre 2008 djibril

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.

Mis à jour le 9 décembre 2008 djibril

Oui, Tk n'est pas la seule extension de Perl permettant de faire des interfaces graphiques.

Il existe aussi des extensions telles :


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.

Mis à jour le 9 décembre 2008 djibril

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 ""
Si vous avez ce type de messages d'erreur :

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.
Tk n'est pas installé.
Pour l'installer :

Code : Sélectionner tout
ppm install Tk
Code : Sélectionner tout
perl -MCPAN -e 'install Tk'
Pour plus d'informations sur l'installation des modules Perl, reportez-vous à notre FAQ Perl et aux cours.

Vous avez également cet article : Installer Tk sur une distribution de Perl récente

Mis à jour le 9 décembre 2008 djibril

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.

Mis à jour le 9 décembre 2008 djibril

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
Voilà le résultat :

Mis à jour le 9 décembre 2008 djibril

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.

Mis à jour le 13 décembre 2008 djibril

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; 
}
Exécutez ce programme depuis une console. Il affichera le message "Affichage après MainLoop - fenêtre détruite" dans la console après avoir cliqué sur le bouton.

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.

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