Comment construire une Interface
Graphique Utilisateur (GUI) sous Matlab
Nadège Thirion-Moreau, Olivier Derrien, Xavier Luciani
SeaTech, 2ème année
N. Thirion-Moreau GUI Matlab 1 / 114
Sommaire
1 Qu’est-ce qu’une interface graphique Matlab et à quoi cela sert-il ?
Quelques règles élémentaires avant de se lancer...
Analyse
Design
2 Programmation : comment s’y prendre ?
Approche bas-niveau vs approche haut niveau
Approche haut-niveau : utilisation du GUIDE Matlab
3 La gestion des événements
Les callbacks
4 Les différents éléments composant une interface graphique en
approche bas niveau
Les éléments de type menu des GUI Matlab : les menu, uimenu, et
uicontextmenu
Les éléments de type fenêtre : boites de dialogue
Les éléments de contrôle des GUI Matlab : les uicontrol
N. Thirion-Moreau GUI Matlab 2 / 114
En TP...
N. Thirion-Moreau GUI Matlab 3 / 114
Rôle et intérêt ?
N. Thirion-Moreau GUI Matlab 4 / 114
Que sont les GUI ?
Composants graphiques (icônes, boutons, fenêtres, boîtes de
dialogue, menus, etc.) présentés visuellement aux utilisateurs
Ils servent d’interface aux applications logicielles
Ils sont pilotés par des événements : clicks, déplacement de la souris,
saisie clavier, etc. qui seront traités par des fonctions dédiées → en
Matlab ce sont les Callbacks
Ces objets graphiques sont caractérisés par des handles et des
propriétés, ils sont répartis en classes d’objets.
Parmi les classes les plus utilisées :
I user interface controls → uicontrols
I user interface menus → uimenus
N. Thirion-Moreau GUI Matlab 5 / 114
Intérêt des GUI
augmenter la convivialité : communiquer avec l’ordinateur sans
utilisation de commandes de programmation
créer des démonstrations automatisées
pouvoir partager des programmes avec d’autres personnes sans
qu’elles aient à connaître la moindre instruction Matlab
N. Thirion-Moreau GUI Matlab 6 / 114
Quelques recommandations avant de débuter...
Les 3 étapes clef de l’élaboration d’une “bonne” interface graphique :
1 Analyse
2 Design / conception et prototypage papier
3 Programmation
N. Thirion-Moreau GUI Matlab 7 / 114
Quelques recommandations avant de débuter...
Les 3 étapes clef de l’élaboration d’une “bonne” interface graphique :
1 Analyse
2 Design / conception et prototypage papier
3 Programmation
N. Thirion-Moreau GUI Matlab 7 / 114
Quelques recommandations avant de débuter...
Les 3 étapes clef de l’élaboration d’une “bonne” interface graphique :
1 Analyse
2 Design / conception et prototypage papier
3 Programmation
N. Thirion-Moreau GUI Matlab 7 / 114
Phase d’analyse
Par qui sera-t-elle utilisée : catégorie d’utilisateurs ?
I enfants vs adultes
I spécialistes vs neophytes du domaine
I etc...
Comment sera-t-elle utilisée ?
I récits d’usage ou prévoir tous les scénarios possibles
I parvenir à identifier le niveau d’expertise des utilisateurs
I anticiper les limitations du systèmes
I voire planifier les futures versions d’upgrade en fonction du retour
utilisateur
Pourquoi sera-t’elle utilisée ?
I spécifications, cahier des charges
I etc...
N. Thirion-Moreau GUI Matlab 8 / 114
Phase de design
De
Quels composants graphiques ?
Quelles tâches ?
Et quel séquencement ?
aurez vous besoin pour rendre votre interface graphique réellement utile,
effective et conviviale
→ Utilité du passage au prototypage papier !
N. Thirion-Moreau GUI Matlab 9 / 114
Phase de design
Intégrer les considérations utilisateurs (cible visée)
Les 3 raisons principales pouvant conduire au développement d’une
interface graphique
1 disposer d’un outil utile et fiable pour accomplir une tâche
relativement large
2 automatiser des calculs laborieux
3 rechercher de l’information dans des données ou apprendre de ces
données
N. Thirion-Moreau GUI Matlab 10 / 114
Phase de design
Quelques règles
pour accomplir une tâche relativement large
1 réduire les interventions/demandes auprès de l’utilisateur
2 coller au mieux au flux de travail de l’utilisateur
3 tirer avantage des standards en matière d’interface
pour automatiser des calculs laborieux
1 faire le + simple possible : nombre de fenêtres, de points de
décisions, etc. maintenus au strict minimum
2 faire le + standard possible : barre de menu et raccourcis classiques
(CTRL-C pour copier), descripteurs standards “Enregistrer” et
“Enregistrer sous...”.
pour rechercher de l’information ou apprendre des données
1 bcp de flexibilité → pouvoir rapidement basculer d’un mode de
représentation à un autre, agir sur les résolutions
2 prévoir des allers-retours → pouvoir défaire le traitement s’il ne
donne pas de résultats satisfaisants
3 l’utilisateur ne doit pas se sentir dépassé → faciliter le dialogue avec
les méthodes de traitement (limiter les choix, fournir de l’aide ou des
conseils)
N. Thirion-Moreau GUI Matlab 11 / 114
On passe ensuite à la phase de programmation...
N. Thirion-Moreau GUI Matlab 12 / 114
Phase de programmation
En Matlab, des objets servent à construire l’interface graphique
Les objets liés à l’interface graphique sont les :
uicontrol
uibuttongroup
uipanel
uipushtool
uitoogletool
uitoolbar
uimenu
uicontextmenu
menu
N. Thirion-Moreau GUI Matlab 13 / 114
Phase de programmation
En Matlab, des objets servent à construire l’interface graphique
Les objets liés à l’interface graphique sont les :
uicontrol
uibuttongroup
uipanel
uipushtool
uitoogletool
uitoolbar
uimenu
uicontextmenu
menu
N. Thirion-Moreau GUI Matlab 13 / 114
Phase de programmation
En Matlab, des objets servent à construire l’interface graphique
Les objets liés à l’interface graphique sont les :
uicontrol
uibuttongroup
uipanel
uipushtool
uitoogletool
uitoolbar
uimenu
uicontextmenu
menu
N. Thirion-Moreau GUI Matlab 13 / 114
Les uicontrol
,→ créés pour réaliser une action ou pour sélectionner les options d’une
future action
,→ souvent sélectionnés au moyen de la souris puis click sur bouton souris
Les 10 styles d’objet de type uicontrol
uicontrol Valeur du style Description
Case à cocher ’checkbox’ indique l’état d’une option
Texte éditable ’edit’ zone de texte éditable
Cadre ’frame’ regrouper visuellement des contrôles
Menu pop-up ’popup’ liste d’options mutuellement exclusives
Liste déroulante ’listbox’ liste de sélection avec ascenseur
Bouton ’pushbutton’ invoque un événement immédiatement
Bouton radio ’radio’ option qui peut être sélectionnée
Commutateur ’toggle’ 2 états ’on’ ou ’off’
Slider ’slider’ représente une gamme de valeurs
Texte static ’text’ chaîne de caractère
N. Thirion-Moreau GUI Matlab 14 / 114
Les uicontrol
Visuellement, à quoi ressemblent-t-ils ?
N. Thirion-Moreau GUI Matlab 15 / 114
Les uicontrol
Pour les créer dans la fenêtre courante en approche bas niveau :
>> UICONTROL(’Style’,value0,’PropertyName1’,value1,
’PropertyName2’,value2,...)
avec value0 pour le champ ’Style’ pouvant prendre comme valeur :
>> Style: [ pushbutton | togglebutton | radiobutton | checkbox | edit |
text | slider | frame | listbox | popupmenu ]
Sur un exemple : uicontrol(’Style’,’edit’,’String’,’Bonjour !!!’)
N. Thirion-Moreau GUI Matlab 16 / 114
Les uicontrol
Pour les créer dans une autre fenêtre que la fenêtre courante :
>> fig1 = figure;
>> fig2 = figure;
>> fig3 = figure;
>> UICONTROL(’Parent’, fig2,’Style’,value0,’PropertyName1’,value1,
’PropertyName2’,value2,...)
N. Thirion-Moreau GUI Matlab 17 / 114
Les uicontrol
On manipule des objets → utilisation de méthodes set et get pour
accéder aux propriétés des objets ou pour modifier celles-ci :
Pour interroger le uicontrol sur son état courant (valeurs de ses
propriétés ?) :
»get(h2)
Pour avoir accès à l’ensemble options possibles sur chacune des
propriétés du uicontrol
» set(h2)
N. Thirion-Moreau GUI Matlab 18 / 114
Les uicontrol
toto= uicontrol(’Style’,’edit’,’String’,’hello’)
get(toto)
Renvoie :
BackgroundColor = [0.941176 0.941176 0.941176]
Callback =
CData = []
Enable = on
Extent = [0 0 31 21]
FontAngle = normal
FontName = MS Sans Serif
FontSize = [8]
FontUnits = points
FontWeight = normal
ForegroundColor = [0 0 0]
HorizontalAlignment = center
KeyPressFcn =
ListboxTop = [1]
Max = [1]
Min = [0]
Position = [20 20 60 20]
String = hello
Style = edit
SliderStep = [0.01 0.1]
N. Thirion-Moreau GUI Matlab 19 / 114
Les uicontrol
toto= uicontrol(’Style’,’edit’,’String’,’hello’)
set(toto)
Renvoie :
BackgroundColor
Callback: string -or- function handle -or- cell array
CData
Enable: [ {on} | off | inactive ]
FontAngle: [ {normal} | italic | oblique ]
FontName
FontSize
FontUnits: [ inches | centimeters | normalized | {points} | pixels ]
FontWeight: [ light | {normal} | demi | bold ]
ForegroundColor
HorizontalAlignment: [ left | {center} | right ]
KeyPressFcn: string -or- function handle -or- cell array
ListboxTop
Max
Min
Position
String
Style: [ {pushbutton} | togglebutton | radiobutton | checkbox | edit | text | sl
SliderStep
TooltipString
N. Thirion-Moreau GUI Matlab 20 / 114
Les uicontrol
toto= uicontrol(’Style’,’edit’,’String’,’Bonjour !’)
>> get(toto,’String’)
Renvoie
ans =
Bonjour !
Pour modifier la propriété ’String’
>> set(toto,’String’,’Coucou’)
>> get(toto,’String’)
ans =
Coucou
N. Thirion-Moreau GUI Matlab 21 / 114
Comment développer une interface graphique utilisateur sous
Matlab ?
approche haut-niveau → utilisation du GUIDE de Matlab
(éditeur graphique)
approche bas-niveau → tout est codé manuellement
N. Thirion-Moreau GUI Matlab 22 / 114
Approche bas-niveau vs haut niveau
Deux approches différentes
Dans l’approche bas niveau, tout est codé à la main
Dans l’approche haut-niveau on utilise l’outil de développement de
Matlab (GUIDE)
I Grâce à son éditeur graphique, il facilite la construction du LAYOUT
càd la mise en place de la partie statique de l’IHM :
agencement des composants graphiques sur la fenêtre,
accès aux propriétés des différents uicontrols
mise en place du menu,
mise en place de la barre d’outil
I Mais aussi la partie PROGRAMMATION PURE à travers les
callbacks (leur prototype est écrit directement) → c’est la fonction
appelée quand survient un événement
N. Thirion-Moreau GUI Matlab 23 / 114
Approche bas niveau vs haut niveau
Bas niveau vs haut niveau
Pour préciser ce qui sera fait sur un bouton baptisé “Plot” :
En bas niveau, on aurait une écriture du style :
uicontrol(’Style’,’pushbutton’, ’String’,’Plot’,
’Callback’,’plot(x,y)’,’Units’,’point’,’Position’,[50 65 75 35])
En haut niveau, c’est remplacé par qq chose du type :
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
Ce squelette de code sera généré automatiquement par le GUIDE de
Matlab
N. Thirion-Moreau GUI Matlab 24 / 114
L’environnement de développement
(Graphical User Interface Development
Environment)
Principe
Le GUI est contenu dans 2 fichiers
un fichier figure de suffixe .fig, qui contient les informations sur la
représentation graphique
un fichier m-file de suffixe .m, qui contient la fonction principale du
GUI et plusieurs sous-fonctions → un modèle de ce fichier est généré
par le GUIDE
N. Thirion-Moreau GUI Matlab 25 / 114
L’environnement de développement
(Graphical User Interface Development
Environment)
Plusieurs choix possibles au moment de la création
Dans la fenêtre de commande, taper guide
Sélectionner ensuite l’un des 4 modes proposés :
Mode par défaut : blank guide
Guide avec uicontrols
Guide avec figure et menu
Boite de dialogue modale
N. Thirion-Moreau GUI Matlab 26 / 114
Placer les éléments graphiques sur le Panel de la
figure
Par drag and drop, placement des objets graphiques sur le panel de
la figure principale
Bcp de ces objets sont des instances de la classe Matlab uicontrol
Le GUI est construit en positionnant ces objets graphiques puis en
fixant leurs propriétés
N. Thirion-Moreau GUI Matlab 27 / 114
Placer les éléments graphiques sur le Panel de la
figure
Qq éléments supplémentaires
Panel pour regrouper visuellement des contrôles (uipanel)
Table pour afficher des données sous forme de tableau (uitable)
Axes (surface pour afficher des figures)
Button group (uibuttongroup) pour grouper un ensemble de radio
buttons ou de toggle buttons pour qu’ils fonctionnent ensemble (un
seul sélectionné à la fois)
ActiveX control (Windows) pour pouvoir ajouter un contrôle
ActiveX fait par un autre programme
N. Thirion-Moreau GUI Matlab 28 / 114
Mise en place de l’interface graphique
Une fois tous les éléments graphiques positionnés, votre interface
graphique ressemble à qq chose de ce style
N. Thirion-Moreau GUI Matlab 29 / 114
Modifier certaines propriétés des uicontrols
Modification des propriétés des objets placés en utilisant le Property
Inspector
N. Thirion-Moreau GUI Matlab 30 / 114
Modifier certaines propriétés des uicontrols
N. Thirion-Moreau GUI Matlab 31 / 114
Ecrire les callbacks
1 se placer sur le contrôle sur lequel on veut gérer un événement
2 faire apparaître le menu contextuel (click droit souris)
3 sélectionner view callbacks → Callback
4 passer à la programmation de la fonction qui sera appelée si
l’événement survient
N. Thirion-Moreau GUI Matlab 32 / 114
Voir tous les objets de votre GUI
Possibilité de visualiser l’ensemble des objets présents dans votre GUI
N. Thirion-Moreau GUI Matlab 33 / 114
Hiérarchie des objets Matlab
L’interface graphique Matlab fonctionne avec des syntaxes objets
Ces objets suivent quant à eux la hiérarchie des classes suivante
(héritage et notion de parents, et d’enfants...)
Pour accéder à des propriétés (données liées à l’objet), on utilise des
syntaxes à “.”
N. Thirion-Moreau GUI Matlab 34 / 114
Décryptage sur un callback
Ici, on donne l’exemple d’un bouton
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MAT
% handles structure with handles and user data (see GUIDATA)
Taille=str2num(get([Link],’String’));
Index=get(handles.popupmenu1,’Value’)
handles fait référence à notre IHM
Pour référencer un élément de l’IHM, on lui affecte un Tag
Ainsi [Link] fait référence à une zone de texte placée sur
l’IHM référencée par son Tag baptisé taille
str2num(get([Link],’String’)) récupère la propriété String de
cet objet puis la convertit de String à nombre (str2num)
handles.popupmenu1 fait référence à une liste déroulante placée sur
l’IHM référencée par son Tag baptisé popupmenu1
Index=get(handles.popupmenu1,’Value’) récupère la propriété Value
de cet objet. S’il y a 3 options possibles dans la liste, Index pourra
valoir 1, 2 ou 3 en fonction du choix de l’utilisateur
N. Thirion-Moreau GUI Matlab 35 / 114
Créer une barre de menu
Passer par l’éditeur de menus
N. Thirion-Moreau GUI Matlab 36 / 114
Créer une barre de menu
On assemble ensuite la barre de menu et ses sous-menus
N. Thirion-Moreau GUI Matlab 37 / 114
Créer une barre de menu
On choisit ensuite d’utiliser le callback par défaut ou de le réécrire
N. Thirion-Moreau GUI Matlab 38 / 114
Créer une barre d’outils
Passage par l’éditeur de barre d’outils
N. Thirion-Moreau GUI Matlab 39 / 114
Créer une barre d’outils
Assemblage de la barre d’outils
Utilisation des callbacks par défaut ou réécriture des fonctions
callback
N. Thirion-Moreau GUI Matlab 40 / 114
Jouer sur l’ordre de tabulation
N. Thirion-Moreau GUI Matlab 41 / 114
L’écriture de callbacks sur un exemple simple
N. Thirion-Moreau GUI Matlab 42 / 114
L’écriture de callbacks sur un exemple simple
Composition de l’exemple
Une figure où tracer → tag MaFigure
Une liste déroulante → tag ListeCourbesATracer avec 5 choix
possibles (’plot(rand(5))’, ’plot(sin(1:0.01:25))’, ’bar(1:.5:10)’,
’plot(membrane)’, ’surf(peaks)’
Un pushbutton → tag Tracer
N. Thirion-Moreau GUI Matlab 43 / 114
L’écriture de callbacks sur un exemple simple
Callback sur le pushbutton
function BoutonTracer_Callback(hObject, eventdata, handles)
sélectionner la figure où afficher puis la réinitiliser
axes([Link]);
cla;
récupérer la position de l’option sélectionnée dans la liste déroulante
popup_sel_index = get([Link], ’Value’);
en fonction de sa valeur afficher une courbe différente
switch popup_sel_index
case 1
plot(rand(5));
case 2
plot(sin(1:0.01:25.99));
case 3
bar(1:.5:10);
case 4
plot(membrane);
case 5
surf(peaks);
end
N. Thirion-Moreau GUI Matlab 44 / 114
L’écriture de callbacks sur un exemple simple
Callback sur l’option du menu Ouvrir
function OpenMenuItem_Callback(hObject, eventdata, handles)
sélectionner le .fig à ouvrir
file = uigetfile(’*.fig’);
if ∼isequal(file, 0)
open(file);
end
Callback sur l’option du menu Imprimer
function PrintMenuItem_Callback(hObject, eventdata, handles)
ouvrir la boite de dialogue prévue pour imprimer
printdlg(handles.figure1)
→ La connaissance de certaines syntaxes “bas-niveau” reste nécessaire
pour l’écriture des callbacks
N. Thirion-Moreau GUI Matlab 45 / 114
L’écriture de callbacks sur un exemple simple
Callback sur l’option du menu Fermer
CloseMenuItem_Callback(hObject, eventdata, handles)
ouvrir la boite de dialogue pour poser une question : si on veut
vraiment fermer alors détruire la fenêtre sinon continuer
selection = questdlg([’Close ’ get(handles.figure1,’Name’) ’ ?’],[’Close ’
get(handles.figure1,’Name’) ’...’],’Yes’,’No’,’Yes’);
if strcmp(selection,’No’)
return;
end
delete(handles.figure1)
→ La connaissance de certaines syntaxes “bas-niveau” reste nécessaire
pour l’écriture des callbacks
N. Thirion-Moreau GUI Matlab 46 / 114
Quelques fonctions qui pourraient vous aider !
N. Thirion-Moreau GUI Matlab 47 / 114
Échange de variables dans la workspace
Les variables ne sont plus stockées automatiquement dans
la workspace → à nous de le faire !
Pour exporter des données d’une fonction vers la workspace : ici on
stockera la valeur V dans la variable ’name’ de la workspace WS
»ASSIGNIN(WS,’name’,V)
WS peut valoir ’caller’ ou ’base’
I ’base’ désigne la workspace de base de MATLAB (celle que l’on voit
quand on tape en ligne de commande)
I ’caller’ désigne la workspace de la fonction qui a appelé le fichier .m
Pour relire le contenu d’une variable ’expression’ stockée dans la
workspace WS
» [X,Y,Z,...] = EVALIN(WS,’expression’)
WS peut valoir ’caller’ ou ’base’.
Similaire à la fonction EVAL sauf que l’on peut contrôler dans quelle
workspace l’expression est évaluée
N. Thirion-Moreau GUI Matlab 48 / 114
Ajout de chemins vers d’autres répertoires
Pour pouvoir structurer vos programmes et ranger vos fonctions /
vos données dans des répertoires différents
Ici par rapport au répertoire travail courant : pwd
I dans le sous-répertoire MesFonctions
I dans le sous répertoire MesData
>> chemin1=[pwd ’\MesFonctions’];
>> chemin2=[pwd ’\MesData’];
>> addpath(chemin1,chemin2);
N. Thirion-Moreau GUI Matlab 49 / 114
Pour récupérer le handle de la figure courante, de
l’objet courant, des callbacks
Pour récupérer le handle de la figure courante
»gcf
Pour récupérer le handle de l’axe courant dans la figure courante
» gca
Pour récupérer le handle de la figure qui contient l’objet dont le
callback est en train de s’exécuter
» gcbf
Pour récupérer le handle de l’objet courant
» gco
Pour récupérer le handle de l’objet dont le callback est en train
d’être exécuté
» gcbo
N. Thirion-Moreau GUI Matlab 50 / 114
Pour nettoyer la workspace, les figures...
Pour réinitialiser la workspace
»evalin(’base’,’clear all’)
Pour réinitialiser des figures (ici, 2 nommées Fig1 et Fig2 !)
»axes(handles.Fig1);
»cla;
»axes(handles.Fig2);
»cla;
N. Thirion-Moreau GUI Matlab 51 / 114
Les objets de l’interface graphique utilisateur sous Matlab
plus en détail...
approche + bas-niveau
certains de ces éléments peuvent être utilisés dans vos
scripts et pas uniquement à partir d’une IHM développée
sous le GUIDE
une IHM développée sous le GUIDE peut elle-même
s’utiliser comme une fonction depuis vos scripts...
N. Thirion-Moreau GUI Matlab 52 / 114
Une IHM développée sous GUIDE peut s’appeler
depuis un script...
function varargout = MonImLook3D(varargin)
gui_Singleton = 1;
gui_State = struct(’gui_Name’, mfilename, ...
’gui_Singleton’, gui_Singleton, ...
’gui_OpeningFcn’, @MonImLook3D_OpeningFcn, ...
’gui_OutputFcn’, @MonImLook3D_OutputFcn, ...
’gui_LayoutFcn’, [] , ...
’gui_Callback’, []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
La variable varagin correspond à la liste d’arguments d’entrée d’une fonction, cette
liste peut être de taille variable
varargin est un cell array contenant les arguments optionnels de la fonction.
,→ ici notre IHM pourrait être appelée depuis un script Matlab au moyen d’une
instruction MonImLook3D(img) si on cherche à lui passer en paramètre un tableau
d’images par ex.
N. Thirion-Moreau GUI Matlab 53 / 114
Les menus :
menus standards
menus contextuels
N. Thirion-Moreau GUI Matlab 54 / 114
Les Menus : menu
L’instruction menu permet de générer un menu avec des choix pour une
entrée utilisateur
Ces choix apparaissent comme des boutons dans une boite de dialog
Pour créer un menu avec
un titre
une liste de 4 choix de couleurs (rouge, jaune, vert, bleu)
N. Thirion-Moreau GUI Matlab 55 / 114
Les Menus : menu
>> K = menu(’Choisir une couleur’,’Rouge’,’Jaune’,’Vert’,’Bleu’)
>> Sinon K = menu(’Choisir une couleur’,{’Rouge’,’Jaune’,’Vert’,’Bleu’})
>> switch (K)
>> case 1
>> disp ’Rouge’
>> case 2
>> disp ’Jaune’
>> case 3
>> disp ’Vert’
>> case 4
>> disp ’Bleu’
N. Thirion-Moreau GUI Matlab 56 / 114
Les Menus : uimenu
L’instruction uimenu permet de créer une interface utilisateur de type
menu
Ce menu se trouve sur la barre de menu en haut de la figure courante ou
de la figure parente dont on a précisé le handle
Pour créer un menu
attaché à une figure
avec un menu principal ’workspace’
doté d’une liste de 3 sous-menus avec une fonction callback pour chaque
sous-menu
N. Thirion-Moreau GUI Matlab 57 / 114
Les Menus : uimenu
>> h=figure(10)
>> hh=figure(11)
>> f = uimenu(h,’Label’,’Workspace’);
>> uimenu(f,’Label’,’New Figure’,’Callback’,’figure’);
>> uimenu(f,’Label’,’Save’,’Callback’,’save’);
>> uimenu(f,’Label’,’Quit’,’Callback’,’close’,’Separator’,’on’,’Accelerator’,’Q’);
N. Thirion-Moreau GUI Matlab 58 / 114
Les menus contextuels : uicontextmenu
handle = uicontextmenu(’PropertyName’,PropertyValue,...) crée un menu
contextuel qui apparaît quand l’utilisateur clique droit sur un objet graphique
options/items du menu contextuel créés avec la fonction uimenu
association du menu contextuel avec un objet grâce à la propriété
UIContextMenu de l’objet en question en spécifiant le handle du menu
contextuel comme valeur de la propriété
Pour créer un menu contextuel
attaché à une check box
doté d’une liste de 3 sous-menus avec une fonction callback pour chaque
sous-menu
N. Thirion-Moreau GUI Matlab 59 / 114
Les menus contextuels : uicontextmenu
>> handle2=uicontrol(’Style’,’checkbox’,’String’,’Option 2’,’Value’,0,’Position’,
[20 350 100 20]);
>> hcmenu = uicontextmenu;
% Définit les callbacks pour les items du menu contextuel changeant l’aspect
de la checkbox
>> hcb1 = [’set(handle2, ”String”, ”CheckBox2”)’];
>> hcb2 = [’set(handle2, ”Value”, 1)’];
>> hcb3 = [’set(handle2, ”BackgroundColor”, [0.5 0.5 0.5])’];
% Définit les items du menu contextuel et installe les callbacks
>> item1 = uimenu(hcmenu, ’Label’, ’Nom’, ’Callback’, hcb1);
>> item2 = uimenu(hcmenu, ’Label’, ’Valeur’,’Callback’, hcb2);
>> item3 = uimenu(hcmenu, ’Label’, ’Couleur de fond’, ’Callback’, hcb3);
% attache le menu contextuel à la checkbox
>> set(handle2,’uicontextmenu’,hcmenu)
N. Thirion-Moreau GUI Matlab 60 / 114
Les Menus : uimenu depuis le GUIDE
N. Thirion-Moreau GUI Matlab 61 / 114
Les boites de dialogue pré-définies :
servent à rendre vos GUI Matlab plus interactifs et
conviviaux
peuvent aussi s’utiliser avec des scripts Matlab standards
N. Thirion-Moreau GUI Matlab 62 / 114
Boites de dialogue pré-définies
peuvent être ouvertes pour confirmer/infirmer une action de
l’utilisateur, l’avertir d’une erreur ou d’un problème
peuvent permettre d’éviter un crash du programme
peuvent être créées pour permettre une saisie rapide d’informations
(elles-mêmes seront constituées de contrôles (boutons, etc.))
Quelques boites de dialogue standards
boite de dialogue Valeur du style Description
Boite de dialogue ’dialog’ ouvre une boite de dialogue
Boite d’erreur ’errordlg’ pour indiquer une erreur
Boite d’aide ’helpdlg’ pour offrir de l’aide
Boite de saisie ’inputdlg’ pour saisir des paramètres
Boite de type liste ’listdlg’ pour offrir une liste d’options
Boite de message ’msgbox’ pour afficher un message
Boite de questions ’questdlg’ pour poser des questions
Boite d’avertissement ’warndlg’ pour alerter d’un problème
N. Thirion-Moreau GUI Matlab 63 / 114
Boite de dialogue
Une BDD permet à l’utilisateur d’interagir simplement avec le programme
Seule l’ossature de base de la BDD est proposée → y ajouter des uicontrols pour la
rendre opérationnelle. On peut configurer :
Nom de la propriété Valeur par défaut
’BackingStore’ ’off’
’ButtonDownFcn’ ’if isempty(allchild(gcbf)), close(gcbf), end’
’Colormap’ []
’Color’ DefaultUicontrolBackgroundColor
’DockControls’ ’off’
’HandleVisibility’ ’callback’
’IntegerHandle’ ’off’
’InvertHardcopy’ ’off’
’MenuBar’ ’none’
’NumberTitle’ ’off’
’PaperPositionMode’ ’auto’
’Resize’ ’off’
’Visible’ ’on’
’WindowStyle’ ’modal’
N. Thirion-Moreau GUI Matlab 64 / 114
Boite de dialogue
>> h = dialog(’WindowStyle’, ’normal’, ’Name’, ’My Dialog’);
N. Thirion-Moreau GUI Matlab 65 / 114
Boite d’erreur
But : avertir l’utilisateur d’une erreur
Dans une boite d’erreur, 3 paramètres sont modifiables :
le message affiché dans la boite
le titre de la boite
le mode de création (modal ou non modal)
I en modal : la boite conserve la main → cliquer sur OK pour
reprendre la main
I en non modal : la boite rend la main à l’appli. (mode par défaut !)
>> f = errordlg(’Mon Message d”erreur.’, ’Ma Boite d”Erreur’, ’modal’);
N. Thirion-Moreau GUI Matlab 66 / 114
Exemple typique d’utilisation
Gestion des erreurs par blocs try-catch
Plutôt que de laisser s’exécuter du code susceptible de lever une erreur
comme dans l’exemple suivant :
A = rand(5,3); B = rand(5,4);
C = [A; B];
??? Error using ==> vertcat
CAT arguments dimensions are not consistent.
N. Thirion-Moreau GUI Matlab 67 / 114
Gestion des erreurs par blocs try-catch
try
A=rand(10);
B=rand(20);
C = [A; B];
catch exception
[ligA,colA] = size(A);
[ligB,colB] = size(B);
message=[’Matrix A has columns ’, num2str(colA), ’
while matrix B has ’, num2str(colB),’ columns’];
% affichage du message d’erreur Matlab
disp([Link]);
% ou affichage du notre !
errordlg(message, ’Ma Boite d’’Erreur’,’modal’);
disp(message);
end
N. Thirion-Moreau GUI Matlab 68 / 114
Gestion des erreurs par blocs try-catch
Ou avec des message Matlab prédéfinis
try
A=rand(10);
B=rand(20)
C = [A; B];
catch MException
disp([Link]);
errordlg([Link], ’Ma Boite d’’Erreur’,
’modal’);
end
N. Thirion-Moreau GUI Matlab 69 / 114
Boite d’aide
But : aider l’utilisateur dans ses choix
Dans une boite d’aide, 2 paramètres sont modifiables :
le message affiché dans la boite
le titre de la boite
>> f = helpdlg(’Le message d”aide.’, ’Ma Boite d”Aide’);
N. Thirion-Moreau GUI Matlab 70 / 114
Boite de saisie de paramètres
But : permettre à l’utilisateur de facilement saisir des paramètres
Dans une boite de saisie, plusieurs paramètres sont modifiables :
le cell arrays des labels affichés devant les zones de saisie
le titre de la boite
nombre de ligne pour la zone de saisie
le cell array des valeurs par défaut placées dans les zones de saisie
les options possibles sur la fenêtre ou les chaînes de caractères
(’Resize’, ’WindowStyle’, ’Interpreter’)
N. Thirion-Moreau GUI Matlab 71 / 114
Boite de saisie de paramètres
>> prompt={’Entrer la largeur :’,’Entrer la hauteur’,’ Entrer le nom de
palette :’};
>> name=’Ma Boite de Saisie ’;
>> numlines=1;
>> defaultanswer={’20’,’10’,’hsv’};
>> [Link]=’on’; %(ou ’off’)
>> [Link]=’normal’; %(ou ’modal’)
>> [Link]=’tex’; %(ou ’none’)
>> answer=inputdlg(prompt,name,numlines,defaultanswer,options);
N. Thirion-Moreau GUI Matlab 72 / 114
Boite pour proposer une liste d’options
But : permettre à l’utilisateur de facilement sélectionner des
éléments parmi une liste avec ascenseurs
Il est possible de paramétrer :
Nom de la variable Ce à quoi cela correspond
’ListString’ cell array des chaînes de caractères (string) proposées
comme choix dans la listbox
’SelectionMode’ String valant ’single’ ou ’multiple’ (par défaut :’multiple’)
’ListSize’ [width height] de la boite en pixels ([160 300] par défaut)
’InitialValue’ vecteur des indices des items de la liste initialement
sélectionnés (par défaut le premier)
’Name’ string pour le titre de la boite (par défaut ”)
’PromptString’ matrice de String ou cell array de string qui apparaît
comme texte au dessus de la liste (par défault {})
’OKString’ string pour le bouton OK (’OK’ par défaut)
’CancelString’ string pour le bouton Cancel (’Cancel’ par défaut).
N. Thirion-Moreau GUI Matlab 73 / 114
Boite pour proposer une liste d’options
>> liststr={’-0.7500-0.3500i’;’-
0.4000+0.6000i’;
’+0.2850+0.0100i’;’+0.4500+0.1428i’;
’-0.7017+0.3842i’;’-0.8350-0.2321i’};
>> [s,v] = listdlg(’PromptString’,’Sélectionner
une valeur’, ’SelectionMode’,’single’,
’ListString’,liststr);
N. Thirion-Moreau GUI Matlab 74 / 114
Boite de message
But : envoyer un message à l’utilisateur
Dans une boite de message, la taille de la boite s’ajuste automatiquement
à la taille du message à afficher. Il est possible de paramétrer :
Message : le message affiché dans la boite
Title : le titre de la boite
msgbox(Message,Title,Icon) avec Icon l’icône à afficher.
Choix possibles : ’none’, ’error’, ’help’, ’warn’, or ’custom’
Valeur par défaut : ’none’
msgbox(Message,Title,’custom’,IconData,IconCMap) permet de customiser
l’icône.
I IconData contient l’image définissant l’icône
I IconCMap est la palette utilisée pour l’affichage
msgbox(Message,...,CreateMode) spécifie si la boite est modale ou non-modale
Choix possibles : ’modal’, ’non-modal’, ’replace’
Mode par défaut : ’non-modal’
CreateMode peut aussi être une structure avec des champs WindowStyle et
Interpreter
I WindowStyle vaut ’modal’ ’non-modal’ ou ’replace’
I Interpreter peut valoir ’tex’ ou ’none’ (’none’ est le mode par défaut)
N. Thirion-Moreau GUI Matlab 75 / 114
Boite de message
>> h = msgbox(’ Please Wait ’,’ ’);
>> ico=imread(’[Link]’);
>> [Link]=’replace’;
>> [Link]=’tex’;
>> h=msgbox(’X 2 + Y 2 ’,’Titre’,’custom’,ico,cool(64),CreateStruct);
N. Thirion-Moreau GUI Matlab 76 / 114
Boite pour poser une question
But : permettre à l’utilisateur de facilement répondre à une
question simple type Oui/Non
Pour ce type de boîte, la taille s’ajuste automatiquement à ce que l’on fait afficher
dans la boite.
On peut y insérer jusqu’à 3 boutons.
La boite suspend l’exécution du programme dans l’attente d’une réponse.
Plusieurs paramètres sont modifiables :
Answer = questdlg(Question, Title, Btn1, Btn2, Btn3,
OPTIONS);
Question : le message affiché dans la boite
Title : le titre de la boite
Btn1,. . . Btn3 : le nom des boutons (on peut en mettre au plus 3 !)
Options : la structure qui peut contenir Default et Interpreter
I Interpreter peut valoir ’none’ ou ’tex’
I Default est le bouton sélectionné par défaut
N. Thirion-Moreau GUI Matlab 77 / 114
Boite pour poser une question
>> Reponse = questdlg(’Que voulez vous faire ?’, ’Poser une question’,...
’Continuer’, ’Sauver’, ’Quitter’,’Continuer’);
>> switch Reponse,
>> case ’Continuer’,
>> disp(’Vous voulez continuer’);
>> case ’Sauver’,
>> disp(’Vous voulez sauver’);
>> case ’Quitter’,
>> disp(’Vous voulez quitter’);
>> end
N. Thirion-Moreau GUI Matlab 78 / 114
Boite d’avertissement
But : alerter l’utilisateur sur un problème potentiel (quitter sans
sauver par ex.)
La boite d’avertissement s’ajuste à la taille du message à afficher. L’application est
bloquée jusqu’à ce que l’utilisateur clique sur le bouton OK. Finalement, 3 paramètres
sont modifiables.
handle = warndlg(warnstring,dlgname,createmode) :
warnstring : le message affiché dans la boite
dlgname : le titre de la boite
createmode : les options qui sont les mêmes que celles d’une boite de message.
La valeur par défaut pour createmode est ’non-modal’
>> f = warndlg(’Message d”avertissement.’, ’Boite d”avertissement’,
’modal’);
N. Thirion-Moreau GUI Matlab 79 / 114
Les boites de dialogue à but plus utilitaire :
sauver des données dans la workspace ou dans des fichiers
imprimer
lire des données dans un fichier
choisir des couleurs
choisir des fontes
faire patienter
N. Thirion-Moreau GUI Matlab 80 / 114
Pour stocker des données dans la workspace
But : permettre à l’utilisateur de facilement stocker des variables
dans la Workspace
[handle,OK_PRESSED]=export2wsdlg(checkboxlabels,
defaultvariablenames, itemstoexport, title,selected)
checkboxlabels : le cell array des intitulés des checkbox affichées dans la boite
defaultvariablenames : le nom par défaut des variables qui seront stockées dans
la workspace
itemstoexport : le cell array des variables à exporter
title : le titre de la boite de dialogue ouverte
selected : le tableau de booléens indiquant les valeurs par défaut des checkbox
(true ou false).
Il fait la même taille que checkboxlabels
N. Thirion-Moreau GUI Matlab 81 / 114
Pour stocker des données dans la workspace
>> A = randn(10,1);
>> checkLabels = {’Sauver la moyenne de A dans une variable appelée :’ ...
’Sauver l”ecart type de A dans une variable appelée :’...
’Sauver la variance de A dans une variable appelée :’ };
>> varNames = {’mean’,’std’,’var’};
>> items = {mean(A),std(A),var(A)};
>> export2wsdlg(checkLabels,varNames,items, ’Pour sauver dans la
Workspace’,[true,false,true]);
N. Thirion-Moreau GUI Matlab 82 / 114
Les boites de dialogue liées à la lecture
But : permettre à l’utilisateur de facilement lire des données dans un fichier
uiopen(’*.*’) pour présenter à l’utilisateur la boite de dialogue de sélection de fichier
avec le filtre approprié
>> uiopen(’*.mat’) % pour lire des .mat
>> uiopen(’figure’) % pour lire des .fig
>> uiopen(’*.m’) % pour lire des .m
N. Thirion-Moreau GUI Matlab 83 / 114
Les boites de dialogue liées à la lecture
[FileName,PathName,FilterIndex] =
uigetfile(FilterSpec,DialogTitle,DefaultName) pour présenter à l’utilisateur la boite
de dialogue classique de sélection du ou des fichiers à ouvrir
>> [FileName,PathName,FilterIndex] = uigetfile(’*.jpg’)
N. Thirion-Moreau GUI Matlab 84 / 114
Les boites de dialogue liées à la lecture
Mais aussi : permettre à l’utilisateur de facilement sélectionner plusieurs fichiers
simultanément
>> [FileName,PathName] = uigetfile(’*.*’,’Select the M-file’,’MultiSelect’,’on’);
N. Thirion-Moreau GUI Matlab 85 / 114
Les boites de dialogue liées à la sauvegarde
uisave(variables) pour enregistrer des variables de la workspace
uisave(variables,filename)
>> h = rand(10);
>> g = randn(110);
>> uisave(’h’,’g’,’myData’);
N. Thirion-Moreau GUI Matlab 86 / 114
Les boites de dialogue liées à la sauvegarde
[filename, pathname, filterindex] = uiputfile(filterspec, title) pour ouvrir la boite
de dialogue standard pour sauver des fichiers
>> [filename, pathname] = uiputfile(’*.m’, ’Pick an M-file’);
>> if isequal(filename,0) || isequal(pathname,0)
>> disp(’User pressed cancel’)
>> else
>> disp([’User selected ’, fullfile(pathname, filename)])
>> end
N. Thirion-Moreau GUI Matlab 87 / 114
Les boites de dialogue de sélection de couleur
c = uisetcolor([R G B]) pour ouvrir la boite de dialogue standard pour sélectionner
une couleur
N. Thirion-Moreau GUI Matlab 88 / 114
Pour afficher une barre de progression
But : permettre à l’utilisateur de savoir si le calcul risque ou non
de prendre encore bcp de temps
Une barre de progression s’affiche normalement à l’intérieur d’une boucle for
pour indiquer l’état d’avancement d’un calcul.
Pour créer et afficher une barre de progression dont le handle est H :
h = waitbar(X,’message’,
’CreateCancelBtn’,’button_callback’,property, value);
X : nombre compris entre 0 et 1 indiquant l’état du calcul
message : le message à afficher
CreateCancelBtn : pour faire afficher un bouton cancel
’button_callback’ : la fonction à exécuter en cas de click sur le
bouton cancel
N. Thirion-Moreau GUI Matlab 89 / 114
Pour afficher une barre de progression
>> h = waitbar(0,’Please wait...’);
>> for i=1:1000,
>> waitbar(i/1000,h)
>> end
>> disp(’Calcul terminé !’)
>> delete(h) % or close(h)
N. Thirion-Moreau GUI Matlab 90 / 114
Et d’autres boites pour
imprimer (printdlg)
afficher un aperçu avant impression (printpreview)
pour sélectionner un chemin (uigetdir)
pour récupérer des préférences (uigetpref)
pour imposer les caractéristiques de fontes (uisetfont)
N. Thirion-Moreau GUI Matlab 91 / 114
Les uicontrols dans le détail...
N. Thirion-Moreau GUI Matlab 92 / 114
Les uicontrol
,→ créés pour réaliser une action ou pour sélectionner les options d’une
future action
,→ souvent sélectionnés au moyen de la souris puis click sur bouton souris
Les 10 styles d’objet de type uicontrol
uicontrol Valeur du style Description
Case à cocher ’checkbox’ indique l’état d’une option
Texte éditable ’edit’ zone de texte éditable
Cadre ’frame’ regrouper visuellement des contrôles
Menu pop-up ’popup’ liste d’options mutuellement exclusives
Liste déroulante ’listbox’ liste de sélection avec ascenseur
Bouton ’pushbutton’ invoque un événement immédiatement
Bouton radio ’radio’ option qui peut être sélectionnée
Commutateur ’toggle’ 2 états ’on’ ou ’off’
Slider ’slider’ représente une gamme de valeurs
Texte static ’text’ chaîne de caractère
N. Thirion-Moreau GUI Matlab 93 / 114
Les uicontrol
Visuellement, à quoi ressemblent-t-ils ?
N. Thirion-Moreau GUI Matlab 94 / 114
Les uicontrol
Pour les créer dans la fenêtre courante en approche bas niveau :
>> UICONTROL(’Style’,value0,’PropertyName1’,value1,
’PropertyName2’,value2,...)
avec value0 pour le champ ’Style’ pouvant prendre comme valeur :
>> Style: [ pushbutton | togglebutton | radiobutton | checkbox | edit |
text | slider | frame | listbox | popupmenu ]
Pour les créer dans une autre fenêtre que la fenêtre courante :
>> fig1 = figure;
>> fig2 = figure;
>> fig3 = figure;
>> UICONTROL(’Parent’, fig2,’Style’,value0,’PropertyName1’,value1,
’PropertyName2’,value2,...)
N. Thirion-Moreau GUI Matlab 95 / 114
Les uicontrol
Pour interroger l’uicontrol sur son état courant (valeurs de ses
propriétés ?) :
»get(h2)
Pour avoir accès à l’ensemble options possibles sur chacune des
propriétés du uicontrol
» set(h2)
N. Thirion-Moreau GUI Matlab 96 / 114
Les uicontrol dans le détail
N. Thirion-Moreau GUI Matlab 97 / 114
Les check boxes
Les états d’une check box :
Quand les check boxes sont groupables / à certaines caractéristiques
(e.g., fonction, importance), on les groupe physiquement au niveau de la
localisation voire d’un cadre (uiframe).
N. Thirion-Moreau GUI Matlab 98 / 114
Les check boxes
Pour créer 2 check boxes :
de noms “Option 1” et “Option 2”
la première cochée, la seconde décochée
placée à une certaine position dans la fenêtre
>> h1=uicontrol(’Style’,’checkbox’,’String’,’Option 1’,’Value’,1,’Position’,
[20 380 100 20])
>> h2=uicontrol(’Style’,’checkbox’,’String’,’Option 2’,’Value’,0,’Position’,
[20 350 100 20])
Pour modifier l’une des propriété (ici la valeur du nom de la seconde
check box)
>> set(h2,’String’,’Toto’)
N. Thirion-Moreau GUI Matlab 99 / 114
Le texte modifiable (edit) et le texte static (text)
Pour créer deux champs de saisie (Edit) identifiés par un nom (label) :
de noms “Longueur” et “Largeur”
de valeurs par défaut 20 et 10 (les edit)
placés à une certaine position dans la fenêtre
>> a=uicontrol(’Style’,’text’,’String’,’Longueur’,’Position’, [200 320 100 20])
>> b=uicontrol(’Style’,’text’,’String’,’Largeur’,’Position’, [200 340 100 20])
>> c=uicontrol(’Style’,’edit’,’String’,’20’,’Position’, [310 320 40 20])
>> d=uicontrol(’Style’,’edit’,’String’,’10’,’Position’, [310 340 40 20])
N. Thirion-Moreau GUI Matlab 100 / 114
Les Frame
Ne s’utilisent pas pour répondre à un click de l’utilisateur (pas de
Callback !) mais pour fournir une aide visuelle et créer des regroupement
logiques d’uicontrols. Mathworks recommande de les remplacer par des
uipanel ou des uibuttongroup
Pour créer un cadre :
placé à une certaine position dans la fenêtre
englobant deux boutons radios
>> h=uicontrol(’Style’,’frame’,’Visible’,’off’,’Position’,[10 40 120 60])
>> h1=uicontrol(’Style’,’radiobutton’,’String’,’Bouton radio 1’,’Position’, [20 70
100 20])
>> h2=uicontrol(’Style’,’radiobutton’,’String’,’Bouton radio 2’,’Value’,1,
’Position’, [20 50 100 20])
>> set(h,’String’,’Cadre’);
>> set(h,’Visible’,’on’);
N. Thirion-Moreau GUI Matlab 101 / 114
Les Popup
Pour offrir la possibilité à l’utilisateur de sélectionner parmi une liste
d’options
Se reconnaissent à leur flèche sur le côté droit permettant de faire
apparaître la liste d’option
Pour créer une liste déroulante
dont les choix sont : hsv, hot, cool, gray
placée à une certaine position dans la fenêtre
rendu dynamique càd lorsque l’on sélectionne un élément de la
liste on appelle une fonction callback ici setmap
N. Thirion-Moreau GUI Matlab 102 / 114
Les Popup
>> hpop = uicontrol(’Style’, ’popup’,’String’, ’hsv|hot|cool|gray’,’Position’, [200
200 100 50],’Callback’, @setmap);
>> function[]= setmap(hpop,callbackdata)
>> val = get(hpop,’Value’);
>> if val == 1
>> colormap(hsv); disp ’hsv’
>> elseif val == 2
>> colormap(hot); disp ’hot’
>> elseif val == 3
>> colormap(cool); disp ’cool’
>> elseif val == 4
>> colormap(gray);disp ’gray’
>> end
>> end
N. Thirion-Moreau GUI Matlab 103 / 114
Les Listbox
Pour offrir la possibilité à l’utilisateur de sélectionner parmi une liste
d’options. Très proche des uipopup mais la liste d’options reste toujours
visible (si la taille est bien sûr suffisante !)
Pour créer une liste à options
dont les choix sont : hsv, hot, cool, gray
placée à une certaine position dans la fenêtre
rendu dynamique càd lorsque l’on sélectionne un élément de la
liste on appelle une fonction callback ici setmap
N. Thirion-Moreau GUI Matlab 104 / 114
Les Listbox
>> hpop2 = uicontrol(’Style’, ’listbox’,’String’, ’hsv|hot|cool|gray’,’Position’, [20
200 100 50],’Callback’, @setmap2);
>> function[]= setmap2(hpop,callbackdata)
>> val = get(hpop,’Value’);
>> switch(val)
>> case 1
>> colormap(hsv); disp ’hsv’
>> case 2
>> colormap(hot); disp ’hot’
>> case 3
>> colormap(cool); disp ’cool’
>> case 4
>> colormap(gray);disp ’gray’
>> end
>> end
N. Thirion-Moreau GUI Matlab 105 / 114
Les Pushbutton
Très utilisés, ils servent à indiquer qu’une action va se produire si on
appuie : ils ont souvent comme label un verbe (tracer, commencer,
installer etc.) qui décrit l’action qui sera exécutée si l’utilisateur clique
sur eux
Pour créer un pushbutton
dont l’intitulé est Appuyer
placé à une certaine position dans la fenêtre
rendu dynamique càd lorsque l’on clique dessus, on appelle une
fonction callback ici lance (change intitulé et couleur du
bouton)
>> hpop2 = uicontrol(’Style’, ’pushbutton’,’String’, ’Appuyer’,’Position’, [20 200
100 50],’Callback’, @lance);
>> function[]= lance(hpop,callbackdata)
>> set(hpop,’String’,’Pressé’)
>> set(hpop,’ForegroundColor’,[1.0,0,0]);
>> end
N. Thirion-Moreau GUI Matlab 106 / 114
Les Togglebutton
Ils ressemblent beaucoup au pushbutton : sauf qu’ils ne présentent pas
d’état intermédiaire, mais seulement deux états binaires (sélectionné/non
sélectionné)
Pour créer un togglebutton
dont l’intitulé est Appuyer
placé à une certaine position dans la fenêtre
rendu dynamique càd lorsque l’on clique dessus, on appelle une fonction callback
ici lance
N. Thirion-Moreau GUI Matlab 107 / 114
Les Togglebutton
>> hpop2 = uicontrol(’Style’, ’toggle’,’String’, ’Appuyer’,’Position’, [20 200 100
50],’Callback’, @lance);
>> function[]= lance(hpop,callbackdata)
>> set(hpop,’String’,’Pressé’)
>> set(hpop,’ForegroundColor’,[1.0,0,0]);
>> end
N. Thirion-Moreau GUI Matlab 108 / 114
Les Radiobutton
Pour offrir la possibilité à l’utilisateur de choisir une option (on peut
choisir d’en utiliser plusieurs ils pourront fonctionner en groupé ou pas).
Pour créer deux radiobutton
radio 1 et radio 2
placés à une certaine position dans la fenêtre
fonctionnant en non groupés, puis en groupés
N. Thirion-Moreau GUI Matlab 109 / 114
Les Radiobutton
N. Thirion-Moreau GUI Matlab 110 / 114
Les Radiobutton
En non groupé
>> r1 = uicontrol(’Style’, ’radiobutton’,’String’, ’Radio 1’,’Position’, [10 350 100
30],’HandleVisibility’, ’off’);
>> r2 = uicontrol(’Style’, ’radiobutton’,’String’, ’Radio 2’,’Position’, [10 250 100
30],’HandleVisibility’, ’off’);
En groupé
>> bg = uibuttongroup(’Visible’,’off’);
>> r1 = uicontrol(bg,’Style’, ’radiobutton’,’String’, ’Radio 1’,’Position’, [10 350
100 30],’HandleVisibility’, ’off’);
>> r2 = uicontrol(bg,’Style’, ’radiobutton’,’String’, ’Radio 2’,’Position’, [10 250
100 30],’HandleVisibility’, ’off’);
>> set(bg,’Visible’,’on’)
N. Thirion-Moreau GUI Matlab 111 / 114
Les Slider
Les slider sont utilisés pour présenter à l’utilisateur des variables évoluant dans
une gamme fixe de valeurs
Ils sont composés d’une barre (plage des valeurs admissibles), d’un indicateur de
position (la valeur courante) et de flèches (aider au déplacement de l’indicateur
(évolution de l’ordre de 1%))
Un slider ne peut indiquer à l’utilisateur la valeur numérique qu’il représente → il
faudra le coupler à un uicontrol de type texte éditable ou static pour visualiser
cette valeur (cela permettra aussi à l’utilisateur de changer la position
directement manuellement).
Il est aussi recommandé d’afficher les bornes du slider avec l’un de ces deux
uicontrols.
N. Thirion-Moreau GUI Matlab 112 / 114
Les Slider
Pour créer un slider
dont la plage de variation est [0-100],
placé à une certaine position dans la fenêtre,
rendu dynamique càd lorsque l’on clique dessus, on appelle une fonction callback,
affichage dynamique de la position du curseur dans une zone edit
N. Thirion-Moreau GUI Matlab 113 / 114
Les Slider
>> hslid = uicontrol(’Style’, ’slider’,’String’, ’MonSlider’,
’Min’,0,’Max’,100,’Value’,50,’Position’, [50 200 200 20],
’SliderStep’,[1/100 0.05],’Callback’, @bouge);
>> hl1 = uicontrol(’Style’,’text’,’String’,’1’,’Position’, [0 200 30 20]);
>> hl2 = uicontrol(’Style’,’text’,’String’,’100’,’Position’, [270 200 30 20]);
>> h3 = uicontrol(’Style’,’edit’,’String’,’50’,’Position’, [130 250 30 30]);
>> assignin(’base’,’Edit’,h3);
>> function[]= bouge(hslid,callbackdata)
>> val = get(hslid,’Value’);
>> h3=evalin(’base’,’Edit’)
>> set(h3,’String’,num2str(val))
>> end
N. Thirion-Moreau GUI Matlab 114 / 114
Les Slider
’SliderStep’,[1/100 0.05] dans cet exemple le pas est
incrémenté/décrémenté de 1 en 1
’SliderStep’,[1/1000 0.05] dans cet exemple le pas est
incrémenté/décrémenté de 0.1 en 0.1
Le second paramètre gouverne la taille du slider
N. Thirion-Moreau GUI Matlab 115 / 114