Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Matlab Gui 1

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 7

Introduction Matlab - Complments GUI

Cration d'une interface graphique


Une interface graphique permet de contrler une application interactivement avec la souris , plutt que par lancement des commandes au clavier. Une interface graphique comprend des menus, des boutons, des "ascenseurs", des cases cocher, des listes de choix, des zones de texte. Exemple d'interface :

Elle permet de "cliquer" directement sur des images, des graphiques ou des objets pour modifier la valeur d'une variable, dclencher des fonctions ou simplement faire apparatre des informations lors d'un survol la souris. Matlab permet d'crire assez simplement une interface graphique pour faire une application interactive utilisable par des utilisateurs non forms Matlab. Les notions principales d'une interface graphique sont : - les divers objets graphiques, auxquels sont attribus des noms symboliques; ces "poignes de main" ou "handles" permettent de les reprer dans l'interface; pour envisager par exemple une modification dynamique (gris d'un bouton provisoirement non utilisable, changement du texte d'un bouton, modification d'une liste de choix...) - les proprits des objets (couleur, disposition, taille, variable associe) - les fonctions excutes par les clic souris sur les lments ou "callbacks" (dcrites en ligne de commande Matlab ). Les versions actuelles de Matlab permettent de construire ces interfaces directement avec la souris grce au GUIDE (Graphical User Interface Development Environment). Cet outil est capable de construire des applications de trs haut niveau. Cependant, son approche est trs dlicate pour un utilisateur peu expriment. L'approche classique par description textuelle de l'interface, moins performante mais comprhensible, permet de se familiariser avec les principales notions. Ce polycopi permet de faire une approche progressive du GUI; les exemples sont oprationnels et sont tester pour se familiariser.

Pierre Bonnet - USTL

Introduction Matlab - Complments GUI

I - Elements de base de l'interface graphique


Pour crer une interface, il faut disposer d'une fentre de base dans laquelle seront insrs les lments graphiques (objets). A noter que tout dessin graphique ou affichage d'image (rsultat de plot, mesh, imshow) peut servir de fentre de base. Cration d'une nouvelle fentre pour application:
fig1 = figure

Le paramtre fig1 est le handle de la fentre, c'est dire le numro de repre de la fentre attribu par Matlab sa cration. Il est possible d'appliquer des fonctions sur cette fentre (redimensionnement, ajout de menus, boutons, ...) en prcisant dans les fonctions le handle auquel elle s'applique. La fentre active un instant donn a pour handle implicite gcf . De faon gnrale, tout objet graphique se voit attribu un handle; ce handle sert de rfrence cet objet dans l'application. Proprits d'une fentre graphique (ou d'un objet)
get(fig1)

Les principales proprits sont : le titre, la position et la dimension dans l'cran, la couleur de fond, la prsence et le type de menus, le redimensionnement... Toute proprit particulire est obtenu par :
valeur_proprit = get( fig1, 'nom_proprit' )

Toute proprit (modifiable!) peut tre modifie en dfinissant une nouvelle valeur pour la proprit considre (valeur numrique, chane, liste de valeur, tableau...)
set(fig1, 'nom_proprit' , valeur_proprit )

Ex : set( fig1 , 'Name' , 'Demo GUI' , 'NumberTitle' , 'off' ); La fentre de base est l'cran qui a pour handle "0". Par get (0 , 'ScreenSize' ), on obtient la taille de l'cran physique de l'cran. Ces valeurs permettent de fixer la taille d'une fentre en rapport avec la dimension physique de l'cran et d'viter de crer une application qui "dborde" de l'cran! La taille et la position de la fentre (ou d'un objet) se fixent par modification de sa proprit ou contrle "position", comprenant les coordonnes (Xor,Yor) du coin infrieur gauche et ses dimensions (Xfen,Yfen):
set( fig1 , 'position' , [ 10 , 10 , 300

, 200 ])

L'ensemble des proprits modifiables d'un objet est donn par set(handle_objet) . La liste s'affiche avec les valeurs possibles pour les diffrentes proprits; les valeurs par dfaut sont signales par des crochets { } . Exemple :
set( fig1 )

Tout objet graphique cr pourra tre supprim par :


delete (handle_objet)

La suppression d'un objet entrane la suppression des objets qui lui sont lis (objets fils).

Pierre Bonnet - USTL

Introduction Matlab - Complments GUI

Insertion d'un Objet dans la fentre L'insertion d'un objet dans une fentre se fait par la fonction "uicontrol" , dont le premier paramtre est le handle de la figure de rfrence. Le deuxime paramtre prcise le "style" ou type d'objet insrer. Exemple le "texte fixe" est l'objet le plus simple; il permet de placer un texte dans la fentre. text1 = uicontrol( fig1 , 'style' , 'text' , 'position' , [100,150,170,30] ,...
'string' , 'Bonjour' , 'fontsize' , 15 )

Toutes les proprits de cet objet peuvent tre modifies par la commande "set" . Par exemple, le texte en lui-mme ('string') tant une proprit, il peut tre modifi:
set( text1 , 'string' , 'Au revoir' );

Autre exemple : insertion d'un bouton-radio :


radio1 = uicontrol( fig1 , 'style' , 'radio' , 'String' , 'Option1' , 'Position' , [30,30,60,30] )

A la diffrence du "texte" , on remarque que cet objet est "cliquable" la souris, avec modification de son aspect (cet fonction est prise en charge sans aucune programmation par l'utilisateur).

II - Principe de l'interaction avec la souris


La presque totalit des objets de l'interface graphique (curseur, case cocher...) peut interagir avec la souris. La fonctionnalit la plus courante est la modification de la valeur associe l'objet (si elle existe): pour les objets destins faire une saisie (case cocher, curseur, champ de saisie, choix de liste...), Matlab gre automatiquement la valeur associe. Cette valeur est rcuprable par toute partie de l'application par la fonction "get" :
valeur = get (handle_objet , 'value');

Cette fonctionnalit permet de saisir la valeur d'une variable par l'interface graphique plutt que par le clavier. La deuxime interaction courante est une action dclenche par le "clic" souris sur l'objet (appuy puis relch): la fonction associe est dcrite dans la proprit "callback" de l'objet. Cette fonction peut tre une instruction de base Matlab ou une fonction dfinie par l'utilisateur (stocke en fichier .m)
Pierre Bonnet - USTL

Introduction Matlab - Complments GUI set( radio1 , 'callback' , 'get( radio1 , ' 'value' ' ) ' );

Remarquer que la fonction est dcrite en chane de caractres avec des " ' " en dbut et fin, ce qui oblige doubler les " ' " pour ceux qui sont inclus dans la chane principale. Cette description en chane permet de dfinir en callback une liste d'instruction, ce qui vite d'crire une multitude de petites fonctions externes ddies aux callbacks. Certains objets n'ont pas de callback (cas des figures) mais possdent d'autres actions associes la souris. Leur emploi est identique au callback classique (description de la fonction en liste d'instructions). Les principales sont :
WindowButtonUpFcn WindowButtonDownFcn WindowButtonMotionFcn

Exemple : rcupration des coordonnes en pixels de la souris au clic


fig1 = figure ; set( fig1 , 'WindowButtonDownFcn' , 'get( fig1 , ' 'CurrentPoint ' ' ) ' );

Si on dsire obtenir des coordonnes dans l'espace de mesure des axes d'un graphique, plutt qu'en pixels de la figure, il faut faire rfrence aux axes ( gca ) dans la fonction de clic :
plot( 20 , 20 , ' r+ ' ) % trac d'une croix rouge au centre set( gcf , 'WindowButtonDownFcn' , 'get( gca , ' 'CurrentPoint' ' ) ' )

Certains objets possdent une fonction callback et une fonction associe au clic souris (par exemple : ButtonDownFcn )

III - Principaux Objets Graphiques Bouton poussoir


Un bouton poussoir se cre par :
bp1= uicontrol ( fig1 , 'style' , 'push' , 'position' , [10 100 60 30 ] ,... 'string' , 'Dbut' , 'callback' , 'plot(T,X)' )

Lorsqu'on clique sur le bouton poussoir, il provoque l'excution de la fonction indique dans le 'callback'. Cette fonction peut tre une instruction de base Matlab ou une liste d'instruction, ce qui vite d'crire une multitude de petites fonctions excutes pat les callbacks. Un bouton-poussoir s'inactive par la commande :
set(bp1 , 'enable' , 'off' )

Par cette commande, on peut rendre inactif certaines commandes, par exemple lorsqu'il manque des informations pour traiter un problme.

Pierre Bonnet - USTL

Introduction Matlab - Complments GUI

Menus
Gnralement, les menus de la fentre d'application ne sont pas les menus standard (voir vue ci-dessus mais des menus spcifiques. Un menu est un titre complt par une liste de sous-menu. Les actions (callbacks)sont gnralement lancs partir des sous-menus. L'ajout de menus spcifique se fait par :
menu1 = uimenu( fig1 , 'label' , ' Statist.' );

Un sous-menu est un lment du menu principal, donc de l'entit pre. Il est donc dclar car menu du menu principal.
smenu1 = uimenu( menu1 , 'label' , 'Normale' , 'callback' , 'methode_normale' ) smenu2 = uimenu( menu1 , 'label' , 'Binomiale' , 'callback' , 'methode_binomiale' );

Pour enlever les menus standards de la fentre, il faut fixer la proprit "Menubar" la valeur par dfaut menubar :
set(fig1,'menubar',menubar);

Ascenseur ou slider
L'ascenseur a pour objectif de fixer la valeur d'un paramtre entre deux bornes fixes. La valeur prise par la variable est reprsente par la position du curseur .
slid1=uicontrol(fig1,'style','slider','position', [100,50,150,20] , 'Min' , -1 , 'Max' , 1 , ... 'callback' , 'val_variable = get(slid1 , ''value'' )' );

Les textes (variable affecte, valeurs..) ne sont pas dfinis par le slider. Il faut le complter par des lments textes convenablement placs et paramtrs; leur valeur est modifier par le callback du slider. Exemple d'ascenseur avec affichage de la valeur:
fig1=figure; texte1=uicontrol(fig1,'Style','text','String',0,'Position', [140,70,80,20],'BackGroundcolor','w'); slid1=uicontrol(fig1,'style','slider','position', [100,50,150,20] , 'Min' , -1 , 'Max' , 1 , ... 'callback' , 'set(texte1,''String'', get(slid1 , ''value'' ))' );

Pierre Bonnet - USTL

Introduction Matlab - Complments GUI

Texte Editable
Permet l'utilisateur de saisir une valeur. C'est une fonction importante.
Text1 = uicontrol ( fig1 , 'style' , ' edit' , 'position', [100,50,150,20] , 'Max' , 1 , 'string' , '0' );

Gnralement, Il faut associer un texte fixe pour prciser le rle de la fentre de saisie l'utilisateur. Exemple : le texte est plac gauche de la fentre de saisie
uicontrol ( fig1 , 'style' , ' texte' , 'position', [10,50,90,20] , 'string' , 'Valeur A' );

Liste de choix
La liste de choix ou pop-up menu permet de slectionner une valeur parmi une liste. Gnralement, cette valeur est un texte . La valeur retourne lors du choix (paramtre 'Value') est le numro de ligne du choix.
choix1 = uicontrol ( gcf , 'Style' , 'popup' , 'String' , 'Pierre|Paul|Jacques' , 'Position' , [10 10 100 80] );

La liste des texte est modifiable aprs la cration de la fentre de choix, en modifiant la proprit 'String' .

Bouton Radio
Le bouton Radio permet de fixer un paramtre binaire ( 0 ou 1 ), reprsentant souvent un choix ou une option dans une application.
fig1 = figure ; radio1 = uicontrol( fig1 , 'style' , 'Radio' , 'Position' , [ 30 20 130 25 ] , 'String' , ' OptionA ' ); radio2 = uicontrol( fig1 , 'style' , 'Radio' , 'Position' , [ 30 45 130 25 ] , 'String' , ' OptionB ' ); uicontrol( fig1 , 'style' , 'Text' , 'Position' , [ 30 70 130 30 ] , 'String' , ... ' Choix des Options ' , 'FontWeight', 'bold' );

Pierre Bonnet - USTL

Introduction Matlab - Complments GUI

Remarquer que les choix ne sont pas exclusifs (chaque choix peut tre slectionner). Pour obtenir l'exclusion mutuelle, il faut agir sur les valeurs de choix par les callbacks.
set( bradio1 , ' Value' , 1 ); set( radio1 , 'callback' , 'set( radio2 , ' ' Value' ' , 0 ) ' ) ; set( radio2 , 'callback' , 'set( radio1 , ' ' Value' ' , 0 ) ' ) ;

Cadre
Le cadre permet de dessiner un rectangle de prsentation (par exemple regroupement de diverses entits graphiques dans un rectangle). Le cadre se dclare par :
cadre1 = uicontrol ( fig1 , 'style' , 'frame' , 'position' , [ posX ,posY,tailleX,tailleY])

Graphiques
Les graphiques se dessinent dans une partie de la fentre dfinie par la fonction 'subplot', dont les paramtres sont diffrents de l'emploi classique (division de la fentre en sous-fentres de taille gale) subplot( 'Position' , [ Xpos Ypos Xtaille Ytaille]) Les paramtres se dfinissent en % de la fentre (redimensionnement automatique des zones graphiques avec le redimensionnement de la fentre). Il est possible d'ouvrir plusieurs zones graphiques dans une mme fentre. Les zones ne doivent pas se chevaucher, sous peine d'effacement de la zone situe sous la nouvelle zone.
fig1 = figure ; z1 = subplot ( 'Position' , [ .05 .1 .4 .4 ] ) ; plot ( sin( 0: 10)) z2 = subplot ( 'Position' , [ .55 .1 .4 .4 ] ) ; plot ( exp( 0 : 10))

Pierre Bonnet - USTL

Vous aimerez peut-être aussi