matlab GUI学习

uicontrol 里面经常用的callback函数   ,用callback时,后面的语句需要 在两边用单引号括起来, 原来的单引号变成双引号。

% 2个按钮
hb1 = uicontrol(...
    'Parent',hf,'Units','Normalized',...
    'Position',[0.85 0.85 0.2 0.15],'String','预览',...
    'Callback',...
    {'vidRes = get(obj, ''VideoResolution'');' ...
    'nBands = get(obj, ''NumberOfBands'');' ...
    'hImage = image( zeros(vidRes(2), vidRes(1), nBands) );'... 
    'preview(obj, hImage);'...
    });  %注意,callback 后面的语句 ,1、多个语句需要用中括号【】括起来,2、每行需用一对单引号括起来


关于callback使用

h0=('position',[200 60 450 450],'name','test');
h1=('parent',h0,'position',[0.15 0.45 0.75 0.45],'visible','on');
x=0:0.1:2*pi;
k=line(x,sin(x));

set(0,'DefaultUicontrolfontsize',12);
p1=uicontrol('parent',h0,'string','加号','position',[80 120 50 30],'callback','set(k,"marker","+")');


为什么按按钮后总是提示:
??? Error: The input character is not valid in statements or expressions.
??? Error while evaluating uicontrol Callback.
 
解决:
maker和+号是用两个单引号 ' 括起来的,而不是一个双引号 "。!!

h0=figure('position',[200 60 450 450],'name','test');
h1=axes('parent',h0,'position',[0.15 0.45 0.75 0.45],'visible','on');
x=0:0.1:2*pi;
k=line(x,sin(x));

set(0,'DefaultUicontrolfontsize',12);
p1=uicontrol('parent',h0,'string','加号','position',[80 120 50 30],'callback','set(k,''marker'',''+'')');
 
 
 
回调属性
' Callback ' 属性值是一个MATLAB字符串,MATLAB将它传给函数eval并在命令窗口工作
空空间行。它对于函数M文件有重要的隐含意义。
因为 ' Callback ' 属性必须是字符串,所以在字符号内多重MATLAB命令、后续行以及
字符符串都会使必需的句法变得十分复杂。如果有不止一个命令要执行,命令间必须适
当地分隔开来。例如
>>uimenu( ' Label ' , ' Test ' , ' CallBack ' , ' grid on; set(gca, ' '
Boox ' ' , ' ' on ' ' ) ' );
把一个字符串传给eval,使命令
>> grid on; set(gca, ' Box ' , ' on ' )
在命令窗口工作空间中执行。这是合法的句法,因为命令用逗号或分号隔开,多重命令
可输输入到同一命令行中。 在定义回调函数时,也遵循MATLAB规定,即在已引用的字符
串内,用两个单引号来表示单引号。
字符串可以串接起来生成一个合法MATLAB字符串,只要把它们括在方括号中。
>>uimenu( ' Label ' , ' Test ' , ' CallBack ' ,[ ' grid on, ' , ' set(g
ca, ' ' Box ' ' , ' ' on ' ' ) ' ]);
注意字符串 ' grid on ' 含有所需的逗号以分隔两个命令。
如果使用了续行号,上述命令可写为
>>uimenu( ' Label ' , ' Test ' ,...
' CallBack ' ,[...
' grid on, ' ,...
' set(gca, ' ' Box ' ' , ' ' on ' ' ) ' ...
]);
上例中命令行被分隔,每 行的末尾加上了三个句号表示命令的继续。注意到上列单行的
所有有元素都被保留,包括字符串分隔命令的逗号。在 ' grid on, …' 行中最后引号
后的逗号是可选的;下一行开始的空格起相同的作用。
如果引号、逗号和括号不正确输入,MATLAB将给出警告;但在复杂回调字符串中很难寻
找错错的。 为了使错误最少,对包含MATLAB语句的回调字符串请记住以下的一些规则:
* 把整个回调字符串括在方括号中,不要忘记最后的右括号' )' 。
* 把各语句括上单引号。
* 已引用的字符串内,要用双引号。如: ' quoted ' : ' a ' ' quoted ' ' string
' ; ' Quote ' ' a ' ' ' quoted ' ' ' string ' ' now '。在引号后要用逗号或空
格结尾。

* 除了最后一句,各语句在引号内要以逗号或分号结尾;在引号后要用逗号或空格结结

* 有后续行的各行要以三个句号(...)结尾。


Gui数据  它的保存方式就是 通过handles的结构体,,结构体的字段名就是 每个对象的tag值   通过handles.tag   对应 对象的句柄

每个对象的句柄 就是通过handles的结构体来访问每一个字段的值 

如果我们有一些数据需要在不同控件之间调用 ,也可以 自定义一个 user的 gui数据的方式

handles.user=[]

主要 更改后,要通过 guidata.(hObject,handles); 更新数据,否则更改是无效的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值