Un listbox est un widget qui affiche une liste de chaines de caractères, une par ligne. A sa création, une nouvelle listbox (zone de liste) n'a pas d'éléments. Les éléments peuvent être ajoutées ou supprimées en utilisant des commandes widget ci-dessous.
-selectmode => MODE |
Spécifie
l'une des plusieurs styles pour manipuler la sélection. Le MODE
peut
être arbitraire, mais les liaisons par défaut s'attendent
à ce que ce soit single,
browse, multiple, ou extended, la valeur par
défaut est browse.
|
Syntaxe | Déscription | Example |
$widget -> curselection(); | Retourne une liste contenant les indices numériques de
l'ensemble des
éléments de la listebox qui est actuellement
sélectionnés.
S'il n'y a aucun élément sélectionné dans
la liste alors une chaîne
vide est retournée. |
$sel = $lst -> curselection(); |
$widget -> delete(first,?last?); | Supprime un ou plusieurs éléments de la
listbox. Premier et le dernier
sont des indices précisant les éléments premier et
le dernier dans la
plage à supprimer. Si last n'est pas spécifié il
prend par défaut le
premièr, à savoir un seul élément est
supprimé. |
$lst -> delete(5); |
$widget -> get(first,?last?); | Si last est omis, retourne le contenu de
l'élément de la listbox indiqué en
premier, ou une chaîne vide si la première se
réfère à un élément
non-existant. Si last est spécifié, la commande retourne
une liste dont
les éléments sont tous des éléments de la
listbox contenus entre la première et la
dernière, inclusivement. |
$lst -> get(5,end); |
$widget -> index(index); | Retourne la valeur de l'indice qui correspond à
l'index (un entier). Si
l'index est fin, la valeur retournée est le nombre
d'éléments dans la listbox (pas l'indice du dernier
élément). |
$lst -> index(5); |
$widget -> insert(index,?element element ...?); |
Insere
zéro ou plusieurs nouveaux éléments dans la liste,
juste avant
l'élément donné par index. Si l'indice est
spécifié en tant que fin alors les nouveaux
éléments sont ajoutés à la fin de la liste.
Retourne
une chaîne vide.
|
$lst -> insert('end',"me"); |
$widget -> size(); |
Retourne une chaîne
décimale indiquant le nombre total d'éléments dans
la listbox.
|
$count = $lst -> size(); |
#!/usr/local/bin/perl
use Tk;
# VariablesGlobal
my $age = 10;
my $occupied = 1;
my $gender = "Male";
# Main Window(fenêtre principale)
my $mw = new MainWindow;
#Aire de construction d'interface utilisateur graphique(GUI Building Area)
my $frm_name = $mw -> Frame();
my $lab = $frm_name -> Label(-text=>"Name:");
my $ent = $frm_name -> Entry();
#Age
my $scl = $mw -> Scale(-label=>"Age :",
-orient=>'v', -digit=>1,
-from=>10, -to=>50,
-variable=>\$age, -tickinterval=>10);
#Traveaux (Jobs)
my $frm_job = $mw -> Frame();
my $chk = $frm_job -> Checkbutton(-text=>"Occupied",
-variable=>\$occupied);
$chk -> deselect();
my $lst = $frm_job -> Listbox(-selectmode=>'single');
#Adding jobs
$lst -> insert('end',"Student","Teacher","Clerk","Business Man",
"Militry Personal","Computer Expert","Others");
#Genre
my $frm_gender = $mw -> Frame();
my $lbl_gender = $frm_gender -> Label(-text=>"Sex ");
my $rdb_m = $frm_gender -> Radiobutton(-text=>"Male",
-value=>"Male", -variable=>\$gender);
my $rdb_f = $frm_gender -> Radiobutton(-text=>"Female",
-value=>"Female",-variable=>\$gender);
my $but = $mw -> Button(-text=>"Push Me", -command =>\&push_button);
#Aire Text
my $textarea = $mw -> Frame();
my $txt = $textarea -> Text(-width=>40, -height=>10);
my $srl_y = $textarea -> Scrollbar(-orient=>'v',-command=>[yview => $txt]);
my $srl_x = $textarea -> Scrollbar(-orient=>'h',-command=>[xview => $txt]);
$txt -> configure(-yscrollcommand=>['set', $srl_y],
-xscrollcommand=>['set',$srl_x]);
#Geometry Management
$lab -> grid(-row=>1,-column=>1);
$ent -> grid(-row=>1,-column=>2);
$scl -> grid(-row=>2,-column=>1);
$frm_name -> grid(-row=>1,-column=>1,-columnspan=>2);
$chk -> grid(-row=>1,-column=>1,-sticky=>'w');
$lst -> grid(-row=>2,-column=>1);
$frm_job -> grid(-row=>2,-column=>2);
$lbl_gender -> grid(-row=>1,-column=>1);
$rdb_m -> grid(-row=>1,-column=>2);
$rdb_f -> grid(-row=>1,-column=>3);
$frm_gender -> grid(-row=>3,-column=>1,-columnspan=>2);
$but -> grid(-row=>4,-column=>1,-columnspan=>2);
$txt -> grid(-row=>1,-column=>1);
$srl_y -> grid(-row=>1,-column=>2,-sticky=>"ns");
$srl_x -> grid(-row=>2,-column=>1,-sticky=>"ew");
$textarea -> grid(-row=>5,-column=>1,-columnspan=>2);
MainLoop;
## Functions
#This function will be executed when the button is pushed
sub push_button {
my $name = $ent -> get();
$txt -> insert('end',"$name\($gender\) is $age years old and is ");
my $job = "";
#See whether he is employed
if ( $occupied == 1 ) {
my $job_id = $lst -> curselection(); #Get the no of selected jobs
if ( $job_id eq "" ) { #If there is no job
$job = "a Non worker.";
}
else {
$job = $lst -> get($job_id) ;#Get the name of the job
$txt -> insert('end',"a $job.");
}
}
else {
$txt -> insert('end',"unemployed.");
}
}
Wow! Notre "petit " exemple est un grand (et totalement inutile)
programme dès maintenant. Je vais m'arrêter 'exampling'
partir de
maintenant.
C'est assez compliqué n'est-ce pas? Pourquoi ne vous lancez le
script et de voir ce qu'est une belle écriture nous avons faits.
Copiez
le script ci-dessus et collez-le dans un fichier appelé
"info.pl" et
double-cliquez le fichier. Voila! Nous sommes Perl / Tk programmeurs