概述
一 回调函数
每个控件都有自己的回调函数,而回调函数都有不同的触发方式,通过回调函数,控件才能完成交互。后面的回调函数主要就两种形式,其中一种就是按钮按下时的回调函数了。
set(button_handler, 'callback', 'function_name')
就可以完成按钮的回调函数的设置。设置的函数名为function_name,那么当按钮按下时,相当于你在当前工作路径上执行了此函数,但是如果这个函数和GUI的函数在同一个.m文件内时,这样是无法完成调用,下面提供一种方式。
二 eval函数
eval函数用来执行字符串形式的MATLAB语句,提供函数或者脚本的另一种实现方式,其调用方式为
eval('command_string')
例如,
a = 10;
plot(1:a);
和
a = 10;
b = 'plot(1:a)';
eva(b)
完成的效果是一样的。
三 gca,gcf函数
gca返回当前坐标轴的句柄,而gcf返回当前图像窗口的句柄,调用方式如下
ah = gca;
fh = gcf;
在获取当前窗口和当前坐标轴的句柄后,就可以使用set和get函数来修改它们的属性了。
四 findobj函数
完成查找对象,调用方式为
objs = findobj('type',value1,'property',value2); % 查找类型为value1的,属性property的值为value2的对象
例如,
fh = findobj('type','figure','name','part2demo'); % 查找名为part2demo的图像句柄
五 nargin和nargout函数
函数nargin,返回函数的输入变量个数。对应的就有nargout,返回函数的输出个数。这里的输入输出的个数并非函数定义时的个数,而是函数在被调用时,传入的输入以及等待输出的个数。调用方式如下,
n = nargin;
n = nargout;
六 小结,用eval函数实现回调函数
这一部分重点是eval函数,本文用eval函数的主要目的是实现回调函数,采用输入来作为是否为回调函数的标识。
基本的实现方式是这样的:
当存在输入时,采用eval来执行输入字符串,从而完成.m文件内部函数的调用,完成回调函数的功能。
当不存在输入时,重新建立part2demo窗口,这里为了简便,建立窗口时,属性值与第一部分的相同,仅仅改变了图像句柄的'name'属性和按钮句柄的'callback'属性。
function part2(in) % 主函数
if nargin
eval(in) % 实现回调函数
else
fhs = findobj('type','figure','name','part2demo');% 查找名为part2demo的图像句柄
if ~isempty(fhs) % 判断是否存在part2demo窗口
delete(fhs) % 若存在窗口则删除
end
fh = figure('name','part2demo', ... 设置图像名
'unit','pixel', ... 设置单位,与按钮一样,这里设置为像素,好调整位置
'position',[240,70,800,600], ... 假设电脑是1280X768的分辨率,那么我设置一个800X600的图像,尽量在屏幕中央
'numbertitle','off', ... 关闭figure的数字标题
'resize','off', ... 不支持窗口大小的变换
'menubar','none', ... 取消默认菜单栏
'toolbar','none' ... 取消默认工具栏
);
ah = axes('units','normalized', ... 设置单位,设置为归一化,
'position',[0,0,1,1], ... 铺满整个窗口
'tickdir','out', ... 设置坐标轴标记的方向为向外,这样在坐标轴上就不会看到了
'xlim',[1,800], ... 设置x轴范围为1到800
'ylim',[1,600] ... 设置y轴范围为1到600
);
ph = uicontrol(fh, ... 父句柄为刚刚建立的图像句柄
'style','pushbutton', ... 风格为按钮
'string','绘制一个正弦波 - -', ... 设置按钮文字
'fontsize',40, ... 设置字体大小
'units','normalized', ... 设置单位为归一化
'position',[0,0,1,0.2], ... 设置按钮在窗口下方
'callback','part2(''pushbutton_callback'')' ... 设置按钮的回调函数,在坐标轴中绘制正弦波 ¥¥¥¥¥¥¥¥
);
end
function pushbutton_callback % 回调函数
plot(200*sin(1:800)+350)
set(gca, ... 设置当前坐标轴的属性
'tickdir','out', ... 设置坐标轴标记的方向为向外,这样在坐标轴上就不会看到了
'xlim',[1,800], ... 设置x轴范围为1到800
'ylim',[1,600] ... 设置y轴范围为1到600
);
这里,内部函数的名字为 pushbutton_callback,所以在设置按钮的回调函数时,只需设置为 part2('pushbutton_callback') 即可。这样,在按钮按下时,会执行
part2('pushbutton_callback')
通过eval('pushbutton_callback')调用pushbutton_callback函数。截图和第一部分差不多,就不再贴了。
最后
以上就是高挑老鼠为你收集整理的matlab gui eval,MATLAB GUI ,2,使用MATLAB的函数来实现MATLAB GUI,part 2,eval和回调函数...的全部内容,希望文章能够帮你解决matlab gui eval,MATLAB GUI ,2,使用MATLAB的函数来实现MATLAB GUI,part 2,eval和回调函数...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复