matlab gui eval,MATLAB GUI ,2,使用MATLAB的函数来实现MATLAB GUI,part 2,eval和回调函数...

一  回调函数

每个控件都有自己的回调函数,而回调函数都有不同的触发方式,通过回调函数,控件才能完成交互。后面的回调函数主要就两种形式,其中一种就是按钮按下时的回调函数了。

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函数。截图和第一部分差不多,就不再贴了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值