« Découvrir Scilab/Créer une interface graphique GUI » : différence entre les versions

Contenu supprimé Contenu ajouté
m →‎Créer une zone d'édition : mise e forme code
Modifier les propriétés d'un élément
Ligne 92 :
Exemple :
<source lang = "scilab">
b = uicontrol("string"style, "$x^2$pushbutton",...
"string", "$x^2$",...
"callback", "X = [0:0.1:5]; plot(X, X.^2);");
</source>
 
=== Modifier les propriétés d'un élément ====
 
Les pointeurs permettent de définir les propriétés d'un élément graphique. Ainsi, une fonction de rappel ''(callback)'' peut modifier un autre objet.
 
Dans l'exemple ci-dessous, nous traçons une courbe en bleu ; le pointeur de cette courbe est appelé <code>courbe</code>. Puis, nous créons des boutons pour modifier la couleur de la courbe, c'est-à-dire la propriété <code>courbe.foreground</code>.
 
Notons que nous travaillons avec des unités normalisées (propriétés <code>"units", "normalized"</code>) : dans ce système d'unités, la largeur et la hauteur de la fenêtre valent 1. Pour la fonction <code>xsetech()</code>, le point (0, 0) se trouve en haut à gauche, le point (1, 1) en bas à droite (sens de lecture latin). Pour la définition des autre objets, et notamment des boutons que l'on crée, le point (0, 0) est en bas à gauche et le point (1 ,1) en haut à droite (convention mathématique).
 
<source lang="scilab">
f = figure(0);
clf;
 
// la fenêtre de traçage occupe 90 % de la hauteur
// réserve 10 % de la fenêtre en bas pour les boutons
xsetech([0, 0, 1, 0.9])
 
// tracé de la courbe
X=[0:0.1:5];
plot(X, X.^2, "b"); // courbe bleue
 
composant = gce();
courbe = composant.children;
 
// bouton changeant la couleur en noir
bnoir = uicontrol("style", "pushbutton",...
"units", "normalized",...
"position", [0, 0, 0.1, 0.05],...
"BackgroundColor", [0,0,0],...
"callback", "courbe.foreground=1");
 
// bouton changeant la couleur en rouge
brouge = uicontrol("style", "pushbutton",...
"units", "normalized",...
"position", [0.11, 0, 0.1, 0.05],...
"BackgroundColor", [1,0,0],...
"callback", "courbe.foreground=5");
</source>