Bonsoir à tous (et à toutes ?)
J'ai un souci d'affichage avec une listbox; j'ai mis un bout de mon programme en italique ci-dessous, à faire tourner pour tester de votre coté...
Pour voir le problème, il faut sélectionner un dossier qui contient des fichiers dont le nom comprend des caractères spéciaux, genre "çé_là_kè_losse.txt", puis cliquer sur afficher. Normalement, on voit apparaitre dans la listbox les fichiers du dossier choisi, avec la commande $lb->insert('end', $fic);. Pour comparer, j'ai aussi rajouté une sortie console print "$fic\n";.
Et c'est là que je ne comprend pas: dans la console, pas de souci, ca passe, mais pas dans la listbox
Et pour plus de fun, j'ai rajouté ça :
$test = "àçéèêïù";
$lb->insert('end', $test);
Et ca passe bien cette fois...
En image :
En un mot comme en cent :
###### LE CODE ######
use Tk;
$mainw = new MainWindow(
-title => "Selection d'un dossier",
);
$mainw->minsize(300,300);
$dirpath = "Pas de choix pour l'instant";
sub selectionDir{
$Directory = $mainw->chooseDirectory(
-mustexist => 1,
);
if (defined $Directory) {
$dirpath = $Directory;
}
}
sub afficher{
print "dossier choisi: $dirpath\n";
unless ($dirpath eq "Pas de choix pour l'instant" ){
undef @listfic;
@listfic =();
$dirpath =~ s/\//\\/g;
$commande="dir \"$dirpath\"/B/ON";
open (DIR, "$commande |" ) || die "caramba encore rate $!";
$lb->delete(0, 'end');
while (<DIR> ){
chomp;
push(@listfic, "$_" );
}
sort @listfic;
for $fic (@listfic){
$lb->insert('end', $fic);
print "$fic\n";
}
$test = "àçéèêïù";
$lb->insert('end', $test);
}
}
$bouton = $mainw->Button(
-text => "Selection d'un dossier",
-command => [\&selectionDir],
);
$bouton->pack();
$bouton2 = $mainw->Button(
-text => 'Afficher le choix',
-command => [\&afficher],
)->pack();
$lb = $mainw->Scrolled(
"Listbox",
-scrollbars => "se",
-selectmode => 'multiple',
)->pack(
-expand => 1,
-fill => both,
-side => left,
);
MainLoop();
Message édité par lomobob le 16-03-2011 à 17:54:14