OVH Cloud OVH Cloud

Aide SVP

3 réponses
Avatar
Frank
Bonjour à toutes et a tous.
En quelques lignes, je vous expose mon probleme.

J'ai crée un menu déroulant, qui va chercher a partir d'un tableau un
liste de mots. Ma question est : Quand je clique sur un mot de mon menu
déroulant, je voudrais qu'il se mettent dans la fenetre texte situé en
dessous.

Voici un bout du code.
Merci à ceux et celles qui pourront m'aider.
Frank

PS : Je fais ça depuis peu, donc je suis désolé s'il y a des
erreurs de syntaxe ou autre... Merci de votre compréhension.



#Ouverture du fichier de mots, recherche d'un mot et récupération dans un
fichier resultat.txt du ou des mots qui m'interessent...
        
$elt_rec="marche - ";
my $mots_txt = "C\:\/Perl\/dev\/marche.txt";
my $mots = "C\:\/Perl\/dev\/resultat.txt";

open(FICH,"$mots_txt") or die ("impossible d'ouvrir $mots_txt !\n");
open(FICHE,"$mots") or die ("impossible d'ouvrir $mots !\n");
while (<FICH>)
        {
        if (/$elt_rec/i)
                {
                $enreg=$_;
                ($buf1,$buf2,$buf3,$buf4,$mot_recherche) = split(\s+
$enreg);
                open (FICHE,">>$mots");
                print FICHE ("$mot_recherche \n");
                close (FICHE) or die ("impossible de fermer $mots !\n");;
                }       
        }
close(FICH) or die ("impossible de fermer $mots_txt !\n");
close(FICHE) or die ("impossible de fermer $mots !\n");



#Récuperation des mots du fichier resultat et les rentrer dans un menu
defilent.
################################################################################
open (FICHE,"$mots") || die "je ne peux ouvrir $mots";
@liste_mots = <FICHE>;
close (FICHE) || die "je ne peux fermer $mots";
@listes_mots = sort @liste_mots;        # La, je les trie alphabetiquement
$liste = new MainWindow ();             # Création de ma fenetre
$liste -> title ("Liste des mots");
        

$listes_mots = $liste -> Scrolled ( "Listbox" , # Création de ma liste
déroulante ...
                    -font => "{Arial} 10 {bold}",
                    -scrollbars => 'oe',
                    -selectmode => 'single',
                    -height => 6,
                    -setgrid => 1
                    );

foreach $groupe ( @listes_mots )
        {
        $listes_mots -> insert ( 'end' , $groupe ) ;
        }
$listes_mots -> pack () ;

        
#=> C'est la dedans que je voudrais que vienne s'afficher le mot que j'ai
selectionné...  
#Selection d'un mot.
###################
$texte = $liste -> Text ( -width => 15 , -height =>
1 ) ;       # la, je crée une
fenetre ou devrait venir s'inscrire le mot sur lequel j'ai cliqué...
$texte -> pack ( ) ;


#=> Ca, c'est mon bouton de validation..        
#Bouton de validation
#####################
$val_mot = $liste -> Button (-text => 'Valider', -font => "{Arial} 10
{italic}", -foreground => red, -command => \&validation);
$val_mot->pack(-side => 'bottom');

3 réponses

Avatar
Jogo
Sur fr.comp.lang.perl, Frank clavardait ainsi :
#Ouverture du fichier de mots, recherche d'un mot et récupération dans un
fichier resultat.txt du ou des mots qui m'interessent...


Es-tus sûr de réutiliser les infos de resultats.txt ? Sinon il vaut
mieux utiliser un tableau qu'un fichier.

$elt_rec="marche - ";
my $mots_txt = "C:/Perl/dev/marche.txt";
my $mots = "C:/Perl/dev/resultat.txt";


Les : n'ont pas besoin d'être échappés, il me semble.

open(FICH,"$mots_txt") or die ("impossible d'ouvrir $mots_txt !n");
open(FICHE,"$mots") or die ("impossible d'ouvrir $mots !n");
while (<FICH>)
{
if (/$elt_rec/i)
{
$enreg=$_;
($buf1,$buf2,$buf3,$buf4,$mot_recherche) = split(s+ $enreg);


Si tu ne réutilises pas les $buf<i>, utilise undef. Pour split, n'oublie
pas que le 1° argument doit être une expression régulière. Donc :
(undef,undef,undef,undef,$mot_recherche) = split(/s+/, $enreg) ;


open (FICHE,">>$mots");


Ce fichier est déjà ouvert, ce qui porte à confusion.

print FICHE ("$mot_recherche n");
close (FICHE) or die ("impossible de fermer $mots !n");;
}
}
close(FICH) or die ("impossible de fermer $mots_txt !n");
close(FICHE) or die ("impossible de fermer $mots !n");


Ce fichier est déjà fermé.

#Récuperation des mots du fichier resultat et les rentrer dans un menu
defilent.
open (FICHE,"$mots") || die "je ne peux ouvrir $mots";


La meilleure syntaxe pour open, c'est un truc du genre :
open($fiche,"<",$mots)

@liste_mots = <FICHE>;
close (FICHE) || die "je ne peux fermer $mots";
@listes_mots = sort @liste_mots;
$liste = new MainWindow ();


Quel module utilises-tu ? Je n'ai pas cherché. Ca aurait du être à toi de nous
le dire en posant ta question. Je ne peux donc pas t'aider plus que ça...

Bon courage !

Avatar
Frank
Jogo wrote:

Sur fr.comp.lang.perl, Frank clavardait ainsi :
#Ouverture du fichier de mots, recherche d'un mot et récupération dans un
fichier resultat.txt du ou des mots qui m'interessent...


Es-tus sûr de réutiliser les infos de resultats.txt ? Sinon il vaut
mieux utiliser un tableau qu'un fichier.

$elt_rec="marche - ";
my $mots_txt = "C:/Perl/dev/marche.txt";
my $mots = "C:/Perl/dev/resultat.txt";


Les : n'ont pas besoin d'être échappés, il me semble.

open(FICH,"$mots_txt") or die ("impossible d'ouvrir $mots_txt !n");
open(FICHE,"$mots") or die ("impossible d'ouvrir $mots !n");
while (<FICH>)
{
if (/$elt_rec/i)
{
$enreg=$_;
($buf1,$buf2,$buf3,$buf4,$mot_recherche) = split(s+ $enreg);


Si tu ne réutilises pas les $buf<i>, utilise undef. Pour split, n'oublie
pas que le 1° argument doit être une expression régulière. Donc :
(undef,undef,undef,undef,$mot_recherche) = split(/s+/, $enreg) ;


open (FICHE,">>$mots");


Ce fichier est déjà ouvert, ce qui porte à confusion.

print FICHE ("$mot_recherche n");
close (FICHE) or die ("impossible de fermer $mots !n");;
}
}
close(FICH) or die ("impossible de fermer $mots_txt !n");
close(FICHE) or die ("impossible de fermer $mots !n");


Ce fichier est déjà fermé.

#Récuperation des mots du fichier resultat et les rentrer dans un menu
defilent.
open (FICHE,"$mots") || die "je ne peux ouvrir $mots";


La meilleure syntaxe pour open, c'est un truc du genre :
open($fiche,"<",$mots)

@liste_mots = <FICHE>;
close (FICHE) || die "je ne peux fermer $mots";
@listes_mots = sort @liste_mots;
$liste = new MainWindow ();


Quel module utilises-tu ? Je n'ai pas cherché. Ca aurait du être à toi de
nous le dire en posant ta question. Je ne peux donc pas t'aider plus que
ça...

Bon courage !


Bonjour JoJo,
Quel module ? Est ce que use Tk; c'est bon ?
Si c'est bien ce que tu me demande...

Merci tout de meme pour tes remarques.
Bien que mon résultat soit "relativement" bon, je vais faire
les modifications.

Je continue de chercher dans les bouquins et sur le net, mais c'est dur :(


Avatar
franck
bonsoir,
je reviens à la charge concernant mon pb.
Peut-etre m'étais-je mal exprimé la 1ere fois (je ne suis pas un habitué des
forums) désolé.

D'apres une liste déroulante, je veux pouvoir choisir un mot, l'afficher
dans un cadre "texte" et en cliquant sur un bouton, faire exécuter une
action par rapport a ce mot.
Je travaille sous perl avec Tk.

Je ne m'y connais pas enormément en Perl (Ca fait que 6 mois que j'ai
commencé) mais je trouve ca interessant.

Si cela n'est pas assez clair, merci de me le dire.
Cordialement.