Re,
j'ai apporté une petit modification au script de message N° 4
Dans le script précedent je faisais la sélection dans la liste ensuite j'utilisais un bouton pour afficher dans un Label le nom de fichier (ce que je trouve assez lourde, mais maintenant après la lecture de quelques pages de la doc j'ai trouvé mieux - j'avoue que je ne me suis jamais interessé au module Tk, je n'ai pas eu besoin).
La modification consiste dans la fait que maintenant quand tu fait clic sur un élément de la liste le nom de fichier sera afficher dans le Label (donc j'ai garder sur la page que le bouton Quitter).
Il nous reste la situation 5.
#! /usr/bin/perl
#
use warnings;use strict;
use Tk;
#
my $rep = '/mnt/home/lami20j';
opendir R_DIR,$rep
or die "E/S : $!\n";
my @rep;
my ($lst,$elem);
sub list_select{
my @select = $lst->curselection();
$elem = $lst->get($select[0]);
}
my $mw = MainWindow->new;
$mw -> title("Lister un répertoire");
$mw->Label( -text => "\Ufichiers dans \E: $rep",
-relief=> 'ridge',)->pack();
$lst = $mw->Scrolled("Listbox",-scrollbars=>'e',
-background => 'white',)->pack(
-anchor => 'center',
-ipadx => '100',
-ipady => '100',
);
$lst->bind("<Button-1>",\&list_select);
$mw->Label( -textvariable => \$elem,
-foreground => 'blue')->pack();
while (my $fic = readdir(R_DIR)){
next if $fic =~ /^\./; # saute les fichiers qui commencent avec .
next if -d "$rep/$fic";# saute les répertoires
push @rep,$fic;
}
# trier sans tenir compte de la casse
# un sort simple comme dans le 1er message
# c'est un tri asciibetique (les chiffres,les majuscule ensuite les minuscules)
# la fonction tri permet le tri alphabetique
#
sub tri { lc($a) cmp lc($b) };
$lst->insert('end',sort tri @rep);
$mw->Label( -text => "Il y a ${ \(@rep+0) } fichiers.",)->pack();
$mw->Button( -text => 'Quitter',
-command => sub {exit},)->pack();
MainLoop;
lami20j