1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
#!/usr/bin/perl
use warnings;
use strict;
use Tk;
use utf8;
use encoding 'utf8';
use Encode;
# Programme principal
# Création de la fenêtre
my $fenetre = new MainWindow(
-title => "Premi\x{c3}\x{a8}re fen\x{c3}\x{aa}tre Tk",
);
# Affichage d'un texte
my $label_accueil = $fenetre->Label(
-text => 'Affichage de larabe',
-background => 'white',
)->pack(qw/ -pady 5 /);
my $widget_texte = $fenetre->Scrolled(
'Text',
-scrollbars => 'osoe',
-background => '#F3EFFF',
)->pack(qw/ -fill both -expand 1 -padx 5 -pady 10 /);
$widget_texte->configure(-font => [-family => '{Simplified Arabic}']);
my $bouton = $fenetre->Button(
-text => 'Ouvrir un fichier',
-command => [ \&ouvrir_fichier, $fenetre, $widget_texte ],
)->pack(qw/ -pady 2 /);
MainLoop;
sub ouvrir_fichier {
my ( $fenetre, $widget_text ) = @_;
my $filetypes = [ [ 'Text Files', '.txt' ], [ 'All files', '*' ] ];
my $fichier = $fenetre->getOpenFile(
-filetypes => $filetypes,
-initialdir => ".",
);
# Gestion des nom de fichiers encodés (avec accents)
my $OS = lc($^O);
if ( $OS eq 'mswin32' and defined $fichier ) {
$fichier = encode( 'iso-8859-1', $fichier );
}
# Lecture du fichier et affichage dans le widget Texte
open my $fh, '<:encoding(UTF-8)', $fichier or die "Impossible de lire le fichier $fichier\n";
while ( <$fh> ) {
s/^\x{ef}\x{bb}\x{bf}//; #au cas ou une BOM
$widget_texte->insert( 'end', $_ );
# Rafraichir le widget
$widget_texte->update();
# Voir la dernière ligne
#$widget_text->see('end');
}
close $fh;
} |
Partager