一、创建GUIDE App
STEP1:点击【主页】-【新建】-【APP】-【GUIDE】,选择Blank GUI
STEP2:Blank GUI的.m文件包含三个默认函数:
1、initialization code - DO NOT EDIT:
function varargout = untitled(varargin)
2、Executes just before untitled is made visible:
GUI能自动执行的代码只有这里,剩下的codes都要触发(e.g. 按下按钮、选择选项)才能执行
function untitled_OpeningFcn(hObject, eventdata, handles, varargin)
% 包含两行重要语句:
% (1)创建了一个句柄handles:
handles.output = hObject;
....
% 全局变量,在这里定义
e.g.handles.variable_name = '';
....
% (2)更新handeles:
guidata(hObject, handles);
3、%--- GUIDE结束后,命令行可以输出一些语句:
function varargout = untitled_OutputFcn(hObject, eventdata, handles)
二、添加控件
STEP3:从GUI界面左侧工具栏,选中想要的控件,然后拖动到GUI面板里。
控件上显示的文字内容和字体大小颜色等属性,可以通过【右键】该控件,打开【属性检查器】进行修改。
四、增加控件功能
1、按钮,pushbutton
添加【按钮】控件后,会出现这个按钮的callback func。在【按下button1】之后,会执行该函数的内容。
function pushbutton1_Callback(hObject, eventdata, handles)
disp('我按下了button1\n');
2、单选按钮,radiobutton
e.g. 首先,在initializztion函数中定义一个全局变量table = ‘’。
再在这里改变该变量的值:当radiobutton1被按下的时候,table被赋值为’1’
function radiobutton1_Callback(hObject, eventdata, handles)
handles.table = '1';
% 与radiobutton2形成互斥的效果:
set(handles.radiobutton2,'value',0);
% 幅值相当于改变了handles的属性,所以这里要更新一下:
guidata(hObject, handles);
3、静态文本
没有回调方程,没什么可操作的。
4、动态文本,edit
e.g. 首先,在initializztion函数中定义一个全局变量text = ‘’。
用户在动态文本框中输入数值,通过回调函数,读取这个值,为变量text赋值。
function edit1_Callback(hObject, eventdata, handles)
handles.text = get(hObject, 'String');
% 上一句相当于改变了handles的属性,所以这里要更新一下:
guidata(hObject, handles);
五、在GUI各个控件中传递全局变量
方法一:
% 1、在initial函数中定义:
handles.variable_name = '0000';
% 2、在别的callback function中获取全局变量的值:
var = handles.variable_name;
% 3、更新全局变量的值:
var = '5678';
guidata(hObject, handles);
方法二:
% 1、在initial函数中定义:
global variable_name;
variable_name = '';
% 2、在别的callback function中获取全局变量的值:
var = handles.variable_name;
% 3、更新全局变量的值:
var = '5678';
guidata(hObject, handles);
方法三:
% 1、利用setappdata函数来设置全局变量
setappdata(handles.pushbutton1,'variable_name','1234');
% 2、在别的callback function中获取全局变量的值:
var = getappdata(handles.pushbutton1,'variable_name');
方法四:
% 1、利用句柄的 UserData 属性来传递数据
set(handles.pushbutton1,'UserData','1234');
% 2、在别的callback function中获取全局变量的值:
var = handles.pushbutton1.UserData;