matlab设计GUI可视化界⾯全⽅位解析
如何使⽤matlab设计GUI及导出
⼀、GUI的基础知识
GUI指的是图形化⽤户界⾯,⼴泛⽤在各种程序的上位机,能够通过简单的操作和按钮就可以调⽤底层代码,⽅便我们使⽤和展⽰结果。写好了底层的代码后我们就可以制作⼀个GUI界⾯来打包和展⽰。
开始⽣成GUI界⾯
⾸先打开matlab,在命令⾏界⾯输⼊guide指令就可以出现以下界⾯,其中有四个备选项,后三个都是⼀些模板,⼤家可以⾃⾏尝试,我们主要讲空⽩操作:
⽣成Blank Gui后会产⽣⼀个.fig⽂件和⼀个.m⽂件。.m⽂件⼤家都知道,就是matlab的程序⽂件,在其中写⽂件。.fig⽂件是图窗⽂件。在我们⽣成⼀个新的GUI完毕后会⽣成编辑窗⼝,这个图窗也可以通过右键点击.fig⽂件在guide中打开。
在.m⽂件中,⽣成的初始部分我们都不需要修改,当我们在GUI中添加了组件后,.m⽂件中会⽣成响应的回调函数,我们只需要编辑回调函数就可以实现相应的操作。这个过程在java⽣成图形化界⾯的思想是类似的。GUI的初始⽂件内容如下:
function varargout = blankgui(varargin)
% BLANKGUI MATLAB code for blankgui.fig
% BLANKGUI, by itlf, creates a new BLANKGUI or rais the existing
% singleton*.
%
% H = BLANKGUI returns the handle to a new BLANKGUI or the handle to
% the existing singleton*.
%
% BLANKGUI('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK i电饭锅蒸馒头
n BLANKGUI.M with the given inp新年快乐书法
ut arguments.
%
% BLANKGUI('Property','Value',...) creates a new BLANKGUI or rais the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before blankgui_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are pasd to blankgui_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choo "GUI allows only one
% *See GUI Options on GUIDE's Tools menu. Choo "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the respon to help blankgui
% Last Modified by GUIDE v2.5 02-Jun-2020 16:33:33
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @blankgui_OpeningFcn, ...
'gui_OutputFcn', @blankgui_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
el
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before blankgui is made visible.
function blankgui_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, e OutputFcn.
% hObject handle to figure
% eventdata rerved - to be defined in a future version of MATLAB
% handles structure with handles and ur data (e GUIDATA)
% varargin command不可以英语
line arguments to blankgui (e VARARGIN)
% Choo default c饭团的做法
ommand line output for blankgui
handles.output = hO麻辣烫制作方法
bject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes blankgui wait for ur respon (e UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = blankgui_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (e VARARGOUT);
% hObject handle to figure
% eventdata rerved - to be defined in a future version of MATLAB
% handles structure with handles and ur data (e GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
⽣成的代码看起来复杂,但我们只需要注意除了OpeningFcn和OutputFcn其他地⽅都不要修改就⾏了。注意,这两个函数在GUI产⽣的时候会先按顺序执⾏⼀遍,然后在检查你是否对控件有操作上述的两个函数是回调函数,那么回调函数是什么意思呢?
回调函数
简单介绍,在GUI设计中回调函数就是我们在界⾯上进⾏相关操作后需要执⾏的函数。matlab中的回调函数分为五种:
1、Callback
这是最常⽤的回调函数,⽐如⼀个普通按钮,当你按下时,就会调⽤Callback函数执⾏,⼀个⽂本框,当你输⼊内容时,就可以执⾏Callback中的内容,⽐如要检查内容是否符合格式等等。总之,对⼀个控件执⾏默认的操作,Callback就会执⾏。实现功能,主要就是写在Callb出纳岗位职责
ack下,当按下这个按钮时我们就可以使matlab开始某种计算然后画图。
2、CreateFcn
在显⽰某个控件之前执⾏⾥⾯的代码,⽐如某个控件要有先⾏条件,我们可以在这⾥⾯准备好。这个回调较少使⽤,我也没⽤过。
3、DeleteFcn
在使某个控件消失或关闭之前执⾏的代码,⽐如关闭时的⾃动保存,关闭时的确认是否关闭,都可以放在这⾥⾯。
4、ButtonDowmFcn
指的是⿏标在这上⾯点⼀下后执⾏的代码。对⼀个普通按钮就只能按下,Callback会覆盖掉这个函数的内容。对其他的控件北京市天气
,这个回调很多时候也起辅助作⽤,毕竟对⼀个可编辑⽂本框,你点他⼲啥,⽂本框就是拿来输⼊内容的。
5、KeyPressFcn
当某个控件被选中获得焦点时执⾏的代码。什么是焦点,⽐如你打开两个word,你输⼊的字只会出现在⼀个word上,因为此时的焦点在这个word上。
Handles结构体
Handles结构体包含了gui中所有对象的属性,包括你建⽴的控件。使⽤tag属性来索引每个控件,⽐如handles.edit1指的就是这个可编辑⽂本框。Handles可以⽤来值传递,在⼀个function中将指存⼊handles,就可以在另⼀个function中取出这个值。你可以在后⽂看见很多使⽤handles进⾏值传递操作的例⼦。
GUI中的参数传递
在GUI的.m⽂件中,参数不像⼀个可执⾏⽂件.m⼀样可以随意传递,因为GUI的.m⽂件中是以function的形式写的,参数不能在这些function之间随意传递,现总结以下两种⽅法:
1、使⽤全局变量
在GUI打开的初始化时,我们定义好全局变量。定义在哪呢?我们刚才提到了初始化.m⽂件中可编辑的是什么啊?对,就是OpeningFcn和OutputFcn,当我们打开这个fig的时候OpeningFcn中的内容会⾃动执⾏,此时我们可以将初始化内容放在这个⾥⾯,就⽐如参数的初始化。
定义全局变量使⽤global x,要使⽤到这个变量时,需要在回调函数中再次声明global x才能使⽤,这件养殖什么鱼利润高
的好处是简单,但是全局变量的缺点就是⼀处改处处改,变量得不到保护。
2、使⽤guidata和hand女性励志故事
les结合的⽅法
如果在⼀个控件的回调函数中产⽣的参数想要传递出去可以这么写,使⽤这种⽅法末尾⼀定要添加guidata():
handles.X=X;
handles.Y=Y;
guidata(hObject, handles);
上述语句将要传出的数据存进了handles结构体中,如果要在另⼀处调⽤参数,可以这么写:
X1=handles.X;
Y1=handles.Y;
plot(X1,Y1)
⼆、控件介绍
选择blank后是如下界⾯:
⼀、普通按钮
普通按钮功能是作为触发⼀个事件trigger。点⼀下就执⾏Callback中的内容。双击控件我们可以进⼊配置界⾯:
在这⾥⾯我们可以设置回调、⽂字、各种属性。
我们结合其他的控件来讲button。
⼆、可编辑⽂本(edit)和静态⽂本(text)