MATLAB GUI手記——用戶菜單以及回調函數的語法規則


http://bilibili.com/video/BV1Ya4y1t7rZ?from=search&seid=18404440388539513689

學習要點:

  • 定義回調函數的語法規則。

創建圖形用戶界面有4種方式:

  1. 純m語言創建。
  2. 命令方式(在命令行窗口敲入命令:figure);
  3. 通過guide命令創建(在命令行窗口敲入命令:guide);
  4. 通過appdesigner命令創建(在命令行窗口敲入命令:appdesigner);

其中,方法4是比較新的方法。目前matlab停止了guide的更新,以后會推廣方法4(2016及以上版本具備).

 下面用純m語言創建圖形用戶界面:

代碼:

%%菜單設計
h_figure=figure;
set(h_figure,'menubar','figure');

運行結果:

 

 

 代碼:

%%菜單設計
h_figure=figure;
set(h_figure,'menubar','none');

運行結果:

 

 帶GUI的代碼,也是可以調試運行的,在想調試的地方設置斷點即可。

 

 

 

注解:

  1. 參數obj是二級菜單blue的句柄。

gui_lianxi.m

%----------------------------%
%matlab GUI設計的練習代碼
%2021/2/12
%----------------------------%

%%菜單設計
h_figure=figure;
%set(h_figure,'menubar','figure');
set(h_figure,'menubar','none');
text_y='這是黃色';
text_w='這是白色';
%%用戶菜單的建立
h_menu=uimenu(h_figure,'label','&color');
h_submenu1=uimenu(h_menu,'label','&green','Callback','set(gcf,''color'',''green'')'); %這個是直接把回調函數的內容寫在這里,適合只有1行代碼的回調函數,最不推薦這種回調函數的寫法
h_submenu2=uimenu(h_menu,'label','&red');
h_submenu3=uimenu(h_menu,'label','&blue');
h_submenu4=uimenu(h_menu,'label','&yellow');
h_submenu5=uimenu(h_menu,'label','&white');
set(h_submenu2,'Callback','set_color');  % 'Callback'代表回調函數,set_color就是要定義的回調函數(set_color.m),
set(h_submenu3,'Callback',@set_color_1); % 這種回調函數set_color_1.m需要有參數obj,event
set(h_submenu4,'Callback',{@set_color_2,text_y});% 這種回調函數set_color_2.m 需要向回調函數傳入一些參數
set(h_submenu5,'Callback',{'set_color_3',text_w});

 

set(h_submenu4,'Callback',{@set_color_2,text_y});% 這種回調函數set_color_2.m 需要向回調函數傳入一些參數

注解:

這樣的回調函數最常用,傳遞一個函數,函數中傳入一些參數。

 

set_color.m文件:

function set_color()
    set(gcf,'color','red');
end

 set_color_1.m文件:

function set_color(obj,event)  
    set(gcf,'color','blue');   
end

 set_color_2.m文件:

function set_color(~,~,text_y)  
    set(gcf,'color','yellow');   
    msgbox(text_y);
end

 set_color_3.m文件:

function set_color(~,~,text_w)  
    set(gcf,'color','white');   
    msgbox(text_w);
end

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM