Matlab——GUI初涉

Matlab——GUI初涉html

MATLAB GUI教學視頻0:GUI中的基本操做—在線播放—優酷網,視頻高清在線觀看
http://v.youku.com/v_show/id_XMjM2Mjk0MjM2.html?firsttime=200編程

——————————————————————————————————————————————————————————————————————函數

在看完這個視頻後想到一個問題ui

在一個按鍵的回調函數中實現的語句,可否放在在其餘按鍵回調函數中同樣實現?this

(能夠,可是注意的是,咱們對某個按鍵進行操做的時候,實際上觸發了那個按鍵的回調函數,因此只會運行該按鍵的回調函數)spa

 

這裏說下GUI傳遞數據跟句柄的一些東西,更多的能夠參看MatLab GUI 數據傳遞[1].net

 回調函數:function panel_Callback(hObject, eventdata, handles)  %以panel爲例code

eventdata是保留參數,能夠忽略視頻

hObject htm

在回調函數中須要調用本身的屬性時,須要用到hObject這個參數,只需hObject.屬性名(如hObject.value)  就能夠了

 

handles

是這個GUI界面的代號。能夠經過它獲取這個界面的全部信息。因此在控件A本身的回調函數中,要獲取或者設置別的控件的屬性,就用  handles.別的控件Tag.屬性 

如set(handles.edit1,'string','123')

 

以上兩個參數都是典型的結構體,大概畫了下handle跟GUI的關係

 

在handle中定義本身的變量和引用變量

在任何地方 

handles.本身的變量名 = 某些值     (其實也就是給結構體添加成員變量)
     這樣你就定義了本身的變量。
     
    b=handles.本身的變量名     (結構名加點號來引用成員變量)
     就能夠獲得這個變量值,一樣也能夠修改它。
     別忘了使用
     guidata(hObject, handles);(不用改,直接黏貼)  在函數末尾來保存你對handles和hObject的操做。(否則你自定義的變量就沒了)

%guidata( 視窗句柄 , 所有句柄 ),若是視窗句柄位置不是視窗句柄,而是一個控件的句柄,那麼這個控件的父視窗(parent figure)會被調用。因此guidata中的視窗句柄 能夠是figure的句柄,也能夠是figure內所包含的控件的句柄,不論是哪一種狀況,最終handles會和figure相關聯。所有句柄即GUI句柄handles

 

怎麼在控件callback函數體以外獲取控件和用戶本身的數據

temp=get(handles.my_popup,'Value');

 

在其餘子函數或者非figure內控件的callback內保存用戶數據到guidata

 

在figure控件callback以內調用guidata(hObject, handles);,hObject是控件的句柄。若是在其餘子函數或者非figure控件的callback知中使用guidata保存數據,hObject就再也不是控件句柄,會出錯。因此咱們要用figure的句柄代替hObject,即handles.figure1
 
   guidata( handles.figure1 , handles);
 
在不一樣GUI之間傳遞數據

傳入 
  function mygui_OpeningFcn(hObject, eventdata, handles, varargin)
                  全部的啓動參數都是經過varargin傳到它的OpeningFcn裏面的。那啓動參數能夠是哪些呢?
     
    一、figure,也就是窗口參數。
         好比說position之類
         例如:打開這個GUI時,使用這個命令  mygui('Position',[434 234 234 34])則表示打開窗口在這個位置;還有哪些可控屬性能夠查help。
     二、自定義參數 。
       若是傳入的參數不是figure的屬性(matlab查找不到你輸入的屬性名),則你輸入的參數做爲一個向量存放在varargin裏面。
       好比mygui('路人甲','80‘),那varargin{1}存放了'路人甲',varargin{2}=’80‘
       
     那mygui中對這讀取兩個數據進行反應,就達到了傳入參數的目的。
 
  傳出
      那怎麼把數據傳出來呢?
      將你要輸出的數據存在handles.output裏面
     在GUI任意地方
              handles.output=數據1;
              handles.secend_output=數據2;
     而後在GUI的outputFcn裏面加上
             varaginout{1}=handles.output;
             varaginout{2}=handles.secend_output; 

 

 

 

——————————————————————————————————————————————————————————————————————-

MATLAB GUI教學視頻2:設置GUI窗口尺寸可調—在線播放—優酷網,視頻高清在線觀看
http://v.youku.com/v_show/id_XMjM2Mjk3Njg0.html

——————————————————————————————————————————————————————————————————————

 

 

其實就是一個設置:Tools→GUI Opinions→Resize Behavior→Proportional .....................

 

 

 

——————————————————————————————————————————————————————————————————————-

MATLAB GUI教學視頻3:滾動條數值顯示在文本框中—在線播放—優酷網,視頻高清在線觀看
http://v.youku.com/v_show/id_XMjM2Mjk5NjU2.html

——————————————————————————————————————————————————————————————————————

 

 

技巧是在文本框回調程序中get滾動條的value,set文本框文字改成滾動條的value

 

有個疑問:滾動條數值顯示在文本框中,開始時文本框無顯示

 

 

 

 

——————————————————————————————————————————————————————————————————————-

MATLAB GUI教學視頻4:Radio Button Check Box的基本用法—在線播放—優酷網,視頻高清在線觀看
http://v.youku.com/v_show/id_XMjM2MzAxNDgw.html

——————————————————————————————————————————————————————————————————————

 

 

 

Radio Button Check Box 兩個均爲單選性的控件,選中它們則它們返回的value爲max(默認爲1),不然爲min(默認爲0)

這兩個控件中屬性中的value是指選中與否時返回的值(至關於容器,只能是max或者min的值,假如是max值,則初始化後默認顯示max值)

如在前面修改過max或者min,必須相應在這裏修改

 

 

 

 

——————————————————————————————————————————————————————————————————————-

MATLAB GUI教學視頻5:使用Button Group繪製不一樣的正弦曲線—在線播放—優酷網,視頻高清在線觀看
http://v.youku.com/v_show/id_XMjM2NDg5Nzky.html

——————————————————————————————————————————————————————————————————————

 

 

 

在Button Group中只能選中一個單選性的控件,選中某項控件,Button Group函數中對應的編程思路是

get  Button Group中的NewSelect屬性的Tag(Matlab自生成的SelectionChangeFcn註釋塊中有說明),經過switch匹配tag進行不一樣操做。  

 

[plain]  view plain copy print ? 在CODE上查看代碼片 派生到個人代碼片
 
  1. current_Obj=get(eventdata.NewValue,'Tag');  %獲得當前被選中的radio button的Tag,賦值給current_Obj  
  2. axes(handles.axes1)  
  3.   
  4. switch current_Obj   %判斷哪個radio button被選中  
[plain]  view plain copy print ? 在CODE上查看代碼片 派生到個人代碼片
 
  1. <span style="white-space:pre">  </span>case......  
[plain]  view plain copy print ? 在CODE上查看代碼片 派生到個人代碼片
 
  1. <span style="white-space:pre">  </span>case.....  

 

 

 

 

——————————————————————————————————————————————————————————————————————

MATLAB GUI教學視頻6:下拉菜單Pop-Up Menu的基本用法—在線播放—優酷網,視頻高清在線觀看
http://v.youku.com/v_show/id_XMjM2OTUyNDEy.html
——————————————————————————————————————————————————————————————————————

 

——————————————————————————————————————————————————————————————————————

MATLAB GUI教學視頻7:ListBox的基本用法—在線播放—優酷網,視頻高清在線觀看
http://v.youku.com/v_show/id_XMjM3NTIxODIw.html
——————————————————————————————————————————————————————————————————————

 

 

以上的兩個視頻其實都是跟Button Group思路是同樣的,經過控件返回的某項屬性值來判斷選中的項目

 

[plain]  view plain copy print ? 在CODE上查看代碼片 派生到個人代碼片
 
  1. var=get(handles.kj1,'value');  



 

 

 

——————————————————————————————————————————————————————————————————————-

MATLAB GUI教學視頻8:選擇參數繪製曲線—在線播放—優酷網,視頻高清在線觀看

http://v.youku.com/v_show/id_XMjM3NjU1ODMy.html

——————————————————————————————————————————————————————————————————————

 

 

在以前的基礎上再增長繪圖的功能,@知識點@是:

 

[plain]  view plain copy print ? 在CODE上查看代碼片 派生到個人代碼片
 
  1. handles.y=y;  
  2. guidata(hObject,handles)  

 

 

1——guihandles(figure1)能夠獲得一個結構體包含了figure1的全部控件的TAG 及其句柄,

2——好比說你想在一個控件中構造一個變量,而且但願能在其它控件中使用,這時候你能夠經過下面的方法
handles.abc=*******(abc是你隨便取的一個名字,其實就至關於每個控件的TAG名,而這個變量會儲存在handles結構之中)
guidata(hObject,handles) % 保存和更新handles結構體 [2]




—————————————————————————————————————————————————————————————————

MATLAB GUI教學視頻9:菜單控件menu的基本用法—在線播放—優酷網,視頻高清在線觀看
http://v.youku.com/v_show/id_XMjQzMTUzODQ4.html

——————————————————————————————————————————————————————————————————————



這一節主要是在瞭解GUI的操做(Menu editor),@知識點@是

1——在實現彈出右擊菜單功能時,須要先創建一個座標系,而後在座標系屬性中的UIContxetMenus中選中你在ContxetMenus中建立的選項名

2——若是不先創建座標系,也能夠實現繪圖的功能,至關於把figure中的圖原樣搬到當前GUI中,設置座標系能夠限定繪圖區域,雖然繪圖地方小了,可是仍是會按比例輸出圖形

3——ContxetMenus中的功能:

選上:Check mark this item 效果以下


(照片來自http://blog.sina.cn/dpool/blog/s/blog_4b1fba1901018pbx.html


選上Separator above this item 效果就像紅色圈的那樣





—————————————————————————————————————————————————————————————————

[1]MatLab GUI 數據傳遞 - lwjaiyjk3的專欄 - 博客頻道 - CSDN.NET
http://blog.csdn.net/yujiak/article/details/8944877

[2]guidata,handles的理解(轉)
http://www.douban.com/note/152943531/

相關文章
相關標籤/搜索