Académique Documents
Professionnel Documents
Culture Documents
GUIs Matlab
GUIs Matlab
Structure : arbre
Un GUI se prsente comme une structure arborescente (ci-dessous)
compose dobjets dinterface
racine
Figure
Uicontrol
Axes
Uimenu
Image Line
Objets dinterface
Proprits :
Page
-9-
Tag :
Axes1
Callback :
pas
Question poses
- Quelle est la diffrence entre : string, int, float
- Quelle est la diffrence entre get set
- Ecrire le programme qui permet de configurer un bouton
- Cest quoi un Callback
-Un handler permet : ......
Style
Text
String
Premier
Tag
Text1
Tag
Button
String
Trac
Callback
t=0 :.1 -:10
Page
10 ;plot(t,t.*sin(t))
Grid
Tag
PushButton2
String
Grid
Callback
grid
Quit
Tag
Button3
String
Quit
Callback
Close(gcf)
root
figure
(axes line), title xlabel ylabel
Lditeur de proprits propedit permet de parcourir les
arborescences, et de visualiser ou de modifier les proprits des
objets existants.
Lditeur dinterface guide permet de dfinir graphiquement les
objets dinterface et leurs proprits
EXERCICE ILLUSTRATION :
puis plot(t,t.*sin(t))
conclusion ? Linstruction plot cre une figure, un axe (zone de
trac), et une (ou des) lignes
h= plot( t, t.*sin(t), t, t)
Linstruction retourne maintenant deux handlers associes aux duex
lignes traces
get(h(1),color))
set(h(2),Tag,ligne 2,
color,[0.1,0.8,0.5],
ButtondownFcn,close)
Puis, cliquer sur la ligne h(2). La figure est ferme en raction.
Remarquer que les noms des proprits graphiques peuvent tre
crits en minuscules ou en majuscules, indiffremment) .
Enfin, reprendre les lignes prcdentes, et ajouter une troisime fois
h= plot( t, t.*sin(t), t, t)
Page
- 11 -
get(h(2),buttondownfcn)
donne une chane vide. Le nouveau dessin a cre deux nouvelles
lignes dans lesquelles les proprits ont t remises leur valeur
dfaut, en particulier ButtonDownFcn = , bien que le trac soit
identique.
ButtonDownFcn
animate start
WindowButtonDownFcn, WindowButtonMotionFcn
ForegroundColor, BackGroundColor, Color: [Rouge Vert Bleu]
Value :
FontAngle
italic
FontName
Brush Script
FontSize
16
FontWeight
bold
Max, Min
50, et 1 (slider)
SliderStep
Position
Page
- 12 -
(text)
Name
Pointer
CurrentPoint
Currpt=get(gca,currrentpoint) x et y souris
NextPlot
add
Page
- 13 -
end
h=findobj(gcbf,'Tag','Edit1');
a=str2num(get(h,'String'));
h=findobj(gcbf,'Tag','Edit2');
b=str2num(get(h,'String'));
h=findobj(gcbf,'Tag','Edit3');
g=str2num(get(h,'String'));
proc=zpk(a,b,g);
if get(findobj(gcf,'Tag','Checkbox1'), 'Value'),
[y,t] = step(proc/(1+proc));
else,
[y,t]=step(proc);
end
plot(t,y) ;
axis([0 t(length(t)) min(y) max(y)])
grid on
Cliquer dans la zone du checkbox renvoie 0 ou 1 dans la
variable v ; selon le cas, le texte associ est modifi et mis jour
CheckBox : callback
v=get(gcbo,'Value')
if v==1,
set(gcbo,'String','Boucle ferme')
else set(gcbo,'String','Boucle ouverte'),
v=get(gcbo,'value');
h=findobj('tag','Edit3');
set(h,'string',num2str(v))
Il faudrait ajouter le couplage inverse Edit3 Slider
Deux callbacks sont dfinis ici selon les actions de lutilisateur sur la
Figure, fentre principale de trac. Appuyer sur un bouton de la
souris dmarre la fonction animator qui affiche la position de la
souris sur les tracs pour faciliter les mesures.
Figure : (la figure englobe lensemble de linterface)
Buttondownfcn
animator start (quivalent la syntaxe animator(start)
WindowButtonDownFcn
h=findobj(gcbf,'Tag','Edit1');
a=str2num(get(h,'String'));
h=findobj(gcbf,'Tag','Edit2');
b=str2num(get(h,'String'));
h=findobj(gcbf,'Tag','Edit3');
g=str2num(get(h,'String'));
proc=zpk(a,b,g);
if get(findobj(gcf,'Tag','Checkbox1'), 'Value'),
[y,t] = step(proc/(1+proc));
else,
[y,t]=step(proc);
end
line(t,y); (noter la diffrence avec plot(t,y) qui recre lobjet Axes1)
axis([0 t(length(t)) min(y) max(y)])
Page
- 14 -
grid on
Fonction pour la lecture de la position de la souris sur les axes des tracs
function [x,y]=animator(action)
switch(action)
case 'start',
set(gcbf,'WindowButtonMotionFcn', ...
'animator move;')
set(gcbf,'WindowButtonUpFcn', ...
'animator stop')
case 'move'
if ~isempty(findobj(gca,'Tag','toto')),
delete(findobj(gca,'Tag','toto'))
end
currpt=get(gca,'CurrentPoint');
h=findobj(gcbf,'Tag','Text1');
set(h,'string',['t= ', ...
num2str(currpt(1,1))...
,' y= ',num2str(currpt(1,2))])
x=currpt(1,1);
y=currpt(1,2);
text(x,y,'\bullet','Tag','toto');
case 'stop'
set(gcbf,'WindowButtonMotionFcn','')
set(gcbf,'WindowButtonUpFcn','')
end
Cette fonction est un bloc switch .. case que lon appelle avec un
argument avec les trois possibilits start, move et stop.
start modifie la ractivit de linterface, en modifiant deux callbacks de
la figure de faon appeler animator(move) quand on dplace la souris
bouton enfonc et animator(stop) quand on relche le bouton.
stop remet la ractivit de linterface dans son tat initial
move mesure la position du curseur sur laxe, proprit CurrentPoint
dans le vecteur currpt, et laffiche sur lobjet texte Text1. On symbolise
galement cette position par une bulle objet toto.
Page
- 15 -