MATLAB實現GUI界面


一、搭建最基本的GUI

本節通過兩個例子進行論述,分別介紹GUI基本操作,即數值運算、數據導入、圖形繪制等功能的GUI實現。

  A-加法器

 首先上效果圖:

輸入兩個數值,點擊Add!,便可顯示結果,下面開始逐步介紹。

  • GUI新建

常用的新建GUI方法有兩個:

    1. Command Window輸入guide—>Create New GUI;
    2. Home—>New—>Graphical User Interface;

注意:勾選“Sace new figure as:”,可選擇存儲路徑,並對文件命名。

這里我們選擇默認的“Blank GUI(Default)”,點擊“OK”,便可進入, 本文主要用到以下幾個選框:

  • GUI框架搭建

本文為基礎內容,框架內修改的主要是

點擊需要添加的選框至面板中,雙擊選框,特性中:

其中

String:顯示的名稱;

Tag:標簽,主要用於程序編寫時,對變量進行定位;

常用:

position:指示空間在figure中的位置
font**:字體相關屬性
string:相當如VB中的caption,就是顯示在控件上的文字
tag:控件的唯一標識符,相當於ID,我們需要tag來指定某一個空間

因此,我們只需要設定參與操作的選框tag;對於不涉及操作、僅僅作為顯示的選框,其tag我們可以默認。

分析加法器,我們總共需要的選框:

其中,涉及操作的有:

兩個輸入(兩個編輯文本框) + 一個執行加法運算的開關(一個確定按鈕)+結果顯示(一個靜態文本框)。

設置完成的效果圖:

點擊“保存”,此時便出現.m和.fig兩個文件,加法器的GUI框架搭建完畢。

  • GUI對應代碼完善

步驟一:設定tag、String等參數;

  首先是回調函數的定位(如果已經退出GUI編輯框,可Command Window輸入guilde進入):

選中並右鍵—>Viwe Callbacks—>Callback,即可打開對應的函數模塊。

對應提取數據的代碼(提出為字符,需要進行str2num的轉換)

1
a =  get (handles.input_a, 'String' ); %String的S大寫

  假設兩個輸入框的String分別設為0(無輸入默認顯示0),tag分別設定為:

    • input1_editText,input2_editText

  OK按鈕重命名:String設置為:Add! 對應tag為:

    • add_pushbutton

  結果的String設為0,對應tag設為:

    • answer_staticText

步驟二:讀取輸入參數

打開第一個輸入框,函數模塊初始為

1
2
3
4
5
6
7
8
function  input1_editText_Callback(hObject, eventdata, handles)
% hObject    handle to input1_editText (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
 
% Hint: get(hObject,'String') returns contents of input1_editText as text
%        str2double(get(hObject,'String')) returns contents of
%        input1_editText as a double

  編輯回調函數,修改為:

1
2
3
4
5
6
7
8
9
10
11
12
% handles 包含figure中所有圖形對象句柄的結構體,如果我們想引用tag為mytag的控件,使用handles.mytag
% set/get 函數是用來設置/獲取某個控件屬性
% 使用get命令獲取第一個加數,並將它轉換成數值
input  str2num ( get (hObject, 'String' ));  % string屬性是字符串,所以必須轉換成數值
 
% 檢驗輸入是否為空,是則將它置為0
if  ( isempty ( input ))
      set (hObject, 'String' , '0' )
end
 
% 保存handles結構體,只要在handles結構體有改變時,才需要保存
guidata (hObject, handles);  % 這里由於handles沒有改變,故這里其實沒有必要,建議在所有Callback最后都添加該命令,此處為將參數設定為GUI變量,可全局調用。

  第二個輸入框同第一個輸入框的操作相同;

步驟三:輸出結果的顯示

  關聯控制鍵,並將結果賦給對應的tag,初始的回調函數:

1
2
3
4
5
% --- Executes on button press in add_pushbutton.
function  add_pushbutton_Callback(hObject, eventdata, handles)
% hObject    handle to add_pushbutton (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

  修改后:

1
2
3
4
5
6
7
8
9
10
a =  get (handles.input1_editText, 'String' );
b =  get (handles.input2_editText, 'String' );
% a和b是字符串變量,我們需要使用str2double函數將其轉換為數值
% 然后才能相加,否則字符串是沒法相加的
total =  str2num (a) +  str2num (b);   % 格式轉換,轉換為數值
% 由於string屬性是字符串,所以必須將兩個數的和轉換為字符串
c =  num2str (total);  % 轉換為字符串
%  將結果賦值給answer_staticText空間的string屬性,於是就可以顯示結果了
set (handles.answer_staticText, 'String' ,c);
guidata (hObject, handles);  % 更新結構體

  至此,完成了GUI代碼的完善。

  • GUI運行

GUI的運行主要分為三種方式。

方式一:Current Directory運行.m文件

  同普通程序運行一致,運行結束即彈出GUI畫框,按要求操作即可。

方式二:GUI界面run

  Command Window輸入guide,進入GUI編輯界面,點擊右上角的,即彈出GUI界面。

方式三:Command Window運行GUI文件名

  例如有GUI程序:example.fig,切換到該文件的目錄下,在Command Window輸入example,回車運行,即彈出GUI界面。

作者:黃傑。

時間:2020-012-14  18:43:35

鏈接:http://www.cnblogs.com/xingshansi/articles/6485688.html


免責聲明!

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



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