2009-07-12 6 views

Répondre

2

J'ai récemment à programmer une interface graphique simple qui contrôle certaines parcelles. Je ne sais pas exactement quelle est votre tâche, mais voici un code de base pour vous aider à démarrer. Cela crée deux figures; La figure 1 a des contrôles, la figure 2 a un tracé de y = x^p. Vous entrez la valeur de p dans la boîte et appuyez sur Entrée pour l'enregistrer et replotter; puis appuyez sur le bouton pour rétablir la valeur par défaut p = 1.

function SampleGUI() 
    x=linspace(-2,2,100); 
    power=1; 
    y=x.^power; 
    ctrl_fh = figure; % controls figure handle 
    plot_fh = figure; % plot figure handle 
    plot(x,y); 
    % uicontrol handles: 
    hPwr = uicontrol('Style','edit','Parent',... 
         ctrl_fh,... 
         'Position',[45 100 100 20],... 
         'String',num2str(power),... 
         'CallBack',@pwrHandler); 

    hButton = uicontrol('Style','pushbutton','Parent',ctrl_fh,... 
         'Position',[45 150 100 20],... 
         'String','Reset','Callback',@reset); 

    function reset(source,event,handles,varargin) % boilerplate argument string 
     fprintf('resetting...\n'); 
     power=1; 
     set(hPwr,'String',num2str(power)); 
     y=x.^power; 
     compute_and_draw_plot(); 
    end 

    function pwrHandler(source,event,handles,varargin) 
     power=str2num(get(hPwr,'string')); 
     fprintf('Setting power to %s\n',get(hPwr,'string')); 
     compute_and_draw_plot(); 
    end 

    function compute_and_draw_plot() 
     y=x.^power; 
     figure(plot_fh); plot(x,y); 
    end 
end 

L'idée de base est que lorsque GUIs vous manipuler des contrôles qu'ils appellent des fonctions « callback », à savoir les gestionnaires d'événements; ces fonctions sont capables d'interagir via des contrôles en utilisant les poignées de contrôle et les méthodes set/get pour obtenir ou modifier leurs propriétés.

Pour accéder à la liste des propriétés disponibles, parcourez le navigateur de propriétés Handle Graphics, très instructif, sur le site Web de documentation de Matlab (http://www.mathworks.com/access/helpdesk/help/techdoc/infotool/hgprop/doc_frame.html); cliquez sur Objets UI (ou tout ce dont vous avez besoin).

Espérons que cela aide!

Questions connexes