Bonjour je suis débutant en perl, j'essaye d'intégrer une interface graphique (une simple boite oui non) a un script écrit par un collègue dans le cadre de mon travaille.

Bien évidemment selon la réponse de l'utilsateur a cette boite oui/non le script aura un chemin différent.

Oui ==> on continue a derouler le script
Non ==> on sort du script

J'ai fais un premier essai en essayant d'ajouter le mot clé die dans le callback du bouton non:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Creation de la fenetre ( parent widget )
			my $mw = MainWindow->new(-title => "Check Teg width");
			my $f = $mw->Frame(-borderwidth => 5, -relief => 'groove')->pack(-side => 'top', -fill => 'x');
 
			$f->Label(-text => "${TegName} hasn't a regular width, would you force the release ? \n")->pack;
 
			$f->Button(-text => "YES", -command => sub { exit })->pack(-side => 'left',
										   -padx=>50,
									           -pady=>5);
 
			$f->Button(-text => "NO", -command => sub { die })->pack(-side => 'right',
										  -padx=>50,
										  -pady=>5); 
 
 
			MainLoop;
			}
Bien entendu ca ne fonctionne pas , je suis passé en mode debugger mais comme c'est une usine a gaz il y a trop d'appel de fichier et vu mon niveau je suis perdu...

J'obtiens ces messages d'erreurs lorsque j'appuie sur le bouton non
Tk::Button::butUp at /perl/5.8.8/Linux/rh5/x86_64/lib/site_perl/5.8.8/x86_64-linux/Tk/Button.pm line 177
<ButtonRelease-1>
(command bound to event)
Tk::Error: Died at /Mydev/src/Config_generator_file/script/Config_generator_file.pl line 164.
Tk callback for .frame.button1
Tk::__ANON__[/perl/5.8.8/Linux/rh5/x86_64/lib/site_perl/5.8.8/x86_64-linux/Tk.pm:251] at /sw/freetools/perl/5.8.8/Linux/rh5/x86_64/lib/site_perl/5.8.8/x86_64-linux/Tk.pm line 251

Ensuite j'ai essyé d'ajouter une fonction car il y a un module associé au script

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Creation de la fenetre ( parent widget )
			my $mw = MainWindow->new(-title => "Check Teg width");
			my $f = $mw->Frame(-borderwidth => 5, -relief => 'groove')->pack(-side => 'top', -fill => 'x');
 
			$f->Label(-text => "${TegName} hasn't a regular width, would you force the release ? \n")->pack;
 
			$f->Button(-text => "YES", -command => sub { exit })->pack(-side => 'left',
										   -padx=>50,
									           -pady=>5);
 
			$f->Button(-text => "NO", -command =>\&quit)->pack(-side => 'right',
										  -padx=>50,
										  -pady=>5); 
 
 
			MainLoop;
			}
Appel de la fonction quit dans mon module .pm
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
sub quit
{
	die("\n");
}
idem ca ne fonctionne pas...

La j'en suis au point ou je vais essayer ==> si j'appuie sur le bouton non je modifie une variable et fonction de l'état de la variable je rentre dans une structure de controle ( un if) et je fais un die du script mais je trouve cette méthode peu élégante...

Merci pour votre aide.