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 boîtes de dialogue (Dialog, DialogBox, messageBox...) (5)
précédent sommaire suivant
 

Il peut être utile d'avoir une interactivité avec l'utilisateur de votre application via un pop-up qui aura pour but de signifier une erreur, d'émettre un warning (une attention particulière), de demander une confirmation, etc. Pour ce faire, le module Tk dispose de quatre boîtes de dialogue standard faciles à utiliser. Chacune d'elles sera illustrée dans les questions ci-dessous. Notez qu'il vous est également possible de créer vos propres pop-up via la méthode Toplevel et de l'habiller à votre guise, voire même de créer un widget composite.

Mis à jour le 11 décembre 2010 djibril

Pour créer une boîte de dialogue messageBox, il faut utiliser la méthode messageBox interne à Tk. messageBox n'est pas un widget composite comme les autres boîtes de dialogue : vous n'aurez pas besoin de faire appel à un module particulier. Voici un exemple illustrant son utilisation :

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 warnings; 
use strict; 
use Tk; 
  
my $mw = new MainWindow( -title => "Boite de dialogue", ); 
$mw->minsize( 300,100 ); 
  
my $reponse = $mw->Button( 
  -text    => 'messageBox', 
  -command => sub { 
    my $reponse_messageBox = $mw->messageBox( 
      -icon    => 'info', 
      -title   => 'Mon titre', 
      -type    => 'OK', 
      -message => 'Ma boite de dialogue messageBox', 
    ); 
  } 
)->pack( qw/ -padx 10 -pady 10 / ); 
  
  
MainLoop;


L'aspect de la fenêtre est dépendant de votre système d'exploitation. A ce jour, il est impossible de modifier la couleur de fond de la fenêtre, du bouton, de changer l'icône du pop-up, ce qui peut être un inconvénient.

$reponse_messageBox contient la réponse de l'utilisateur. Dans notre cas, elle sera égale à Ok si l'utilisateur clique sur le bouton OK. Elle aurait pu être égale à Cancel si l'on avait mis -type à 'OKCANCEL' et cliqué sur le bouton annuler.

  • L'option -icon permet de spécifier le type d'image qui sera affichée à la gauche du message ;
  • L'option -type permet de spécifier le type de bouton. Les choix sont : 'AbortRetryIgnore', 'Ok', 'OkCancel', 'RetryCancel', 'YesNo' or 'YesNoCancel'.

Pour plus d'informations, regardez la documentation officielle.

Mis à jour le 11 décembre 2010 djibril

Pour créer une boîte de dialogue MsgBox, il faut utiliser le module Tk::MsgBox. Inutile de chercher à l'installer si Tk l'est car il fait partie du core de Tk. Voici un exemple illustrant son utilisation :

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 warnings; 
use strict; 
use Tk; 
use Tk::MsgBox; 
  
my $mw = new MainWindow( -title => "Boite de dialogue", ); 
$mw->minsize( 300,100 ); 
  
 $mw->Button( 
  -text    => 'MsgBox', 
  -command => sub { 
    my $msgbox = $mw->MsgBox( 
      -title   => 'Mon titre', 
      -type    => 'okcancel', 
      -message => 'Ma boite de dialogue okcancel', 
    ); 
    my $reponse = $msgbox->Show; 
    print "Reponse : $reponse\n"; 
  } 
)->pack( qw/ -padx 10 -pady 10 / ); 
  
MainLoop;


L'aspect de la fenêtre est dépendant de votre système d'exploitation. A ce jour, il est impossible de modifier la couleur de fond de la fenêtre, du bouton, de changer l'icône, ce qui peut être un inconvénient.

$reponse contient la réponse de l'utilisateur. Dans notre cas, elle sera égale à OK ou à CANCEL en fonction du clic de l'utilisateur.

  • L'option -icon permet de spécifier le type d'image qui sera affichée à la gauche du message ;
  • L'option -type permet de spécifier le type de bouton. Les choix sont : abortretryignore, ok, okcancel, retrycancel, yesno ou yesnocancel ;
  • L'option -detail permet de spécifier un message supplémentaire.

Pour plus d'informations, regardez la documentation officielle.

Mis à jour le 11 décembre 2010 djibril

Pour créer une boîte de dialogue DialogBox, il faut utiliser le module Tk::DialogBox. Inutile de chercher à l'installer si Tk l'est car il fait partie du core de Tk. C'est un widget composite (module Tk issu d'un autre widget). On peut dans cette boîte de dialogue rajouter d'autres widgets, ce qui nous laisse une plus grande marge de manœuvre pour le design de notre boîte de dialogue. Nous pouvons également mettre le texte que l'on veut dans nos boutons et surtout les configurer pour changer leur couleur via la méthode Subwidget par exemple.

Voici un exemple illustrant son utilisation.

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::DialogBox; 
  
my $mw = new MainWindow( -title => "Boite de dialogue", ); 
$mw->minsize( 300,100 ); 
  
$mw->Button( 
  -text    => 'DialogBox', 
  -command => [\&BoiteDialogBox, $mw], 
)->pack( qw/ -padx 10 -pady 10 / ); 
  
MainLoop; 
  
sub BoiteDialogBox { 
  my $widget = shift; 
  my $dialog_box = $widget->DialogBox( 
        -title      => 'Question !!', 
        -buttons    => ["Pourquoi pas ?", "Oui", "Non merci", "Jamais"], 
        -background => '#CCCCFF', 
        -default_button => 'Oui', 
      ); 
  
      # Rajout d'un label 
      $dialog_box->Label( 
        -text       => "Voulez-vous apprendre Perl/Tk ?", 
        -background => '#CCCCFF', 
      )->pack(); 
  
      # Configuration des boutons 
      $dialog_box->Subwidget("B_Oui")->configure( -background => '#68C963', ); 
      $dialog_box->Subwidget("B_Non merci")->configure( -background => '#CF0063', ); 
      $dialog_box->Subwidget("B_Jamais")->configure( -background => 'red', ); 
      my $reponse = $dialog_box->Show(); 
      print "Reponse : $reponse\n"; 
}


Comme vous pouvez le constater, il est possible de configurer notre boîte de dialogue et de l'habiller plus sympathiquement par rapport aux autres boîtes de dialogue (MsgBox et messageBox).

$reponse contient la réponse de l'utilisateur. Dans notre cas, elle sera égale à Pourquoi pas ?, Oui, Non merci ou à Jamais en fonction du clic de l'utilisateur.

Notez l'usage de Subwidget pour obtenir la référence du widget Button voulu. Dans la documentation officielle, il est stipulé d'écrire $dialog_box->Subwidget("B_TEXTEBOUTON") pour obtenir la référence du bouton afin de la configurer à souhait.

Pour plus d'informations, regardez la documentation officielle.

Mis à jour le 11 décembre 2010 djibril

Pour créer une boîte de dialogue Dialog, il faut utiliser le module Tk::Dialog. Inutile de chercher à l'installer si Tk l'est car il fait partie du core de Tk. C'est un widget composite (module Tk issu d'un autre widget Tk::DialogBox). Tout ce qui a été expliqué pour Tk::DialogBox est applicable à ce module.

Voici un exemple illustrant son utilisation.

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
#!/usr/bin/perl 
use warnings; 
use strict; 
use Tk; 
use Tk::Dialog; 
  
my $mw = new MainWindow( -title => "Boite de dialogue", ); 
$mw->minsize( 300,100 ); 
  
$mw->Button( 
  -text    => 'Dialog', 
  -command => [\&BoiteDialogMsgBox, $mw], 
)->pack( qw/ -padx 10 -pady 10 / ); 
  
MainLoop; 
  
sub BoiteDialogMsgBox { 
  my $widget = shift; 
  my $dialog = $widget->Dialog( 
    -title      => 'Question !!', 
    -buttons    => [ 'Pourquoi pas ?', 'Oui', 'Non merci', 'Jamais' ], 
    -background => '#CCCCFF', 
    -text       => "Voulez-vous apprendre Perl/Tk ?", 
  ); 
  
  # Configuration des boutons 
  $dialog->Subwidget("B_Oui")->configure( -background => '#68C963', ); 
  $dialog->Subwidget("B_Non merci")->configure( -background => '#CF0063', ); 
  $dialog->Subwidget("B_Jamais")->configure( -background => 'red', ); 
  my $reponse = $dialog->Show(); 
  print "Reponse : $reponse\n"; 
}


Comme vous pouvez le constater, il est possible de configurer notre boîte de dialogue et de l'habiller plus sympathiquement comparé aux autres boîtes de dialogue (MsgBox et messageBox).

$reponse contient la réponse de l'utilisateur. Dans notre cas, elle sera égale à Pourquoi pas ?, Oui, Non merci ou à Jamais en fonction du clic de l'utilisateur.

Notez l'usage de Subwidget pour obtenir la référence du widget Button voulu. Dans la documentation officielle, il est stipulé d'écrire $DialogBox->Subwidget("B_TEXTEBOUTON") pour obtenir la référence du bouton afin de la configurer à souhait.

A la différence de Tk::DialogBox, il y a une option -text permettant de spécifier son texte.

Pour plus d'informations, regardez la documentation officielle.

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.