100% ont trouvé ce document utile (1 vote)
118 vues119 pages

Construire une GUI sous Matlab

Ce document décrit comment créer une interface graphique (GUI) sous Matlab. Il présente les différentes étapes de conception d'une GUI, notamment l'analyse, la conception et la programmation. Il décrit également les principaux objets graphiques utilisés pour construire une GUI sous Matlab comme les uicontrol, uimenu et les callbacks.

Transféré par

Abdèll Ach
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (1 vote)
118 vues119 pages

Construire une GUI sous Matlab

Ce document décrit comment créer une interface graphique (GUI) sous Matlab. Il présente les différentes étapes de conception d'une GUI, notamment l'analyse, la conception et la programmation. Il décrit également les principaux objets graphiques utilisés pour construire une GUI sous Matlab comme les uicontrol, uimenu et les callbacks.

Transféré par

Abdèll Ach
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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

Vous aimerez peut-être aussi