Matlab GUI

Introduction


Il y a deux façons de réaliser une interface graphique Matlab,


Les objets graphiques

Les objets graphiques les plus importants sont:

L'objet fenêtre

Pour commencer, il faut créer une fenêtre qui contiendra les autres contrôles. Pour ça, on utilise la fonction figure(). La fonction a beaucoup de paramètres, mais on n'est pas obligé de tous les préciser.

Voici quelques propriété de l'objet figure:
CloseRequestFcn Permet de définir le nom de la fonction qui sera appelée si on ferme la fenêtre à l'aide de la fonction close ou en cliquant le x rouge. Cette fonction peut servir (entre autres) à fermer les fichiers et les ports ouverts avant de quitter
Position Position  de la fenêtre par rapport à l'écran. On peut changer les unités à l'aide de la propriété units
On peut utiliser get(0,'ScreenSize') qui retourne les dimensions de l'écran (ex [1 1 1280 800]) histoire de donner à la fenêtre des dimensions correctes.
Visible Définit si la fenetre est visible ou pas, il peut prendre les valeur on ou off
Enable
définit si le contrôle est opérationnel ou non. Elle peut prendre les valeurs {on} , inactive , off
color
Couleur de fond de la fenetre. On peut utiliser une matrice [rouge  vert   bleu] ou les couleurs prédéfinies:
'r' ou 'red', 'g' ou 'green' , 'b' ou 'blue' , 'y' ou 'yellow' , 'm' ou 'magenta' , 'c' ou 'cyan' , 'w' ou 'white' , 'k' ou 'black'
MenuBar Pour afficher ou non la barre des menus et la barre d'outils que matlab affiche par défaut dans la fenêtre. Les valeurs possibles sont {figure} pour oui et none pour non
name Titre de la fenêtre
NumberTitle Pour afficher ou non le numéro de figure. Valeurs: {on}, off
Pointer Pointeur de la souris quand celui ci survole la fenêtre. Valeurs possibles: crosshair | {arrow} | watch | topl |
topr | botl | botr | circle | cross | fleur | left | right | top | bottom | fullcrosshair | ibeam | custom | hand
Resize détermine si on peut redimensionner la fenêtre ou non. Valeurs possibles:  {on} | off
Toolbar Pour afficher ou non la barre d'outils par défaut des fenêtres Matlab. valeurs possibles: none | {auto} | figure
avec l'option par défaut: auto, la barre d'outil est affichée mais elle est supprimée dès qu'on place un contrôle dans la fenêtre
Units Unité de mesure pour le paramètre Position. Les valeurs possibles sont
 inches | centimeters | normalized | points | {pixels} | characters
Pour plus de détail: http://www.mathworks.com/help/matlab/ref/figure_props.html

fh = figure('Position',[400 300 350 160]);



Dans l'exemple ci-dessus, fh représente l'identificateur (handler) de la figure, on peut lui donner le non que l'on veut. Le paramètre 'position' définit la position et les dimensions de la fenêtre. Sous Matlab, l'origine des coordonnées x,y est située au coin bas-gauche de l'écran.  (400,300) est la position du coin bas gauche de la fenêtre par rapport à l'origine. 350 est la largeur de la fenêtre, 160 est sa hauteur.

Si on veut se débarrasser de la barre des menus:
fh = figure('Position',[400 300 350 160],'Menubar','None');



Pour se débarrasser du numéro de figure et lui donner un nom, on utilise les paramètres 'NumberTitle' et 'name',
On peut les rajouter après la création de la fenêtre à l'aide de la fonction set():
set(fh, 'NumberTitle', 'off', 'name' , 'Ce que vous voulez')






Les Abréviations

Les propriété ont souvent des noms assez long. Matlab accepte qu'on utilise seulement les premiers caractères d'une propriété. Par exemple: 'back' à la place de 'backgroud' , 'norm' à la place de 'normalized'

Les valeurs par défaut des propriétés Toutes les propriété des objets graphiques ont des valeurs par défaut. Quand on crée un contrôle, on ne précise jamais toutes ces propriétés. Matlab utilise les valeurs par défaut pour toutes les propriétés qui n?ont pas été précisées.
Dans la documentation Matlab, la valeurs par défaut est précisée entre { }. Par exemple, la propriété Units du contrôle Uicontrol peut prendre les valeurs: {pixels} | normalized | inches | centimeters | points | characters . La valeur par défaut de cette propriété est pixels.

Il est possible de modifier la valeur par défaut d'une  propriété pour un contrôle donné. Pour designer la valeur par défaut de la propriété d'un contrôle, on colle les 3 mots: default, nom du contrôle, nom de la propriété. Par exemple: defaultuicontrolunits est la désignation la la valeur par défaut de la proprité units pour le contrôle uicontrol
Pour faire que la valeur par défaut de units soit la valeur normalized:
set(0,  'DefaultUicontrolUnits',  'normalized')
Les fonctions set() et get() Après avoir crée un contrôle, on peut définir ou redéfinir une ou plusieurs de ces propriétés à l'aide de la fonction set(). On peut aussi obtenir la valeur d'une propriété à l'aide de la fonction get()


h = figure();
set(h, 'Menubar', 'none', 'name', 'Investigations')

m = get(h,'position')   -->   621   269   560   420




Les valeurs par défaut des propriétés


Voir ICI

La suite