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:
Bien entendu ca ne fonctionne pas
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; }, 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
Appel de la fonction quit dans mon module .pm
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; }
idem ca ne fonctionne pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 sub quit { die("\n"); }
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.
Partager