回 帖 发 新 帖 刷新版面

主题:请教一个关于GUI的问题

function fmmm()
clf reset
t=(0:100)/100*2*pi;
y=sin(t);
hline=line(t,y);
uimenu(gcf,'label','Red','callback','set(hline,''color'',''r''),')
uimenu(gcf,'label','Blue','callback','set(hline,''color'',''b''),')
uimenu(gcf,'label','Green','callback','set(hline,''color'',''g''),')
这段程序运行后可以生成图像,但是电击生成的菜单时,matlab提示hline为无效句柄,然后我又定义global hline,然后在命令窗口中定义global hline ,之后生成的菜单有效了。请问哪位高人,这是怎么回事啊? 这里全局变量发挥了什么作用?

回复列表 (共3个回复)

沙发

当你把上面的程序拷贝到matlab editor中可以有提示的:
'hline' never be used
这说明你下面的callback中的函数都是没有用的,因为用单引号之后hline就成为了一个字符串,而不是变量了。

板凳


  谢谢您的答复,最近我又看了几个关于callback的例子,发现它后面单引号里面的指令是用eval指令来运行的,而eval指令的运行是在matlab的base空间,因此程序在调用的时候发现hline在基本控件没有定义,所以提示hline为无效句柄。而全局变量需要随时定义,比如在m文件中使用要global定义,调用时用到base空间还要定义,调用函数时还要定义
 不过非常谢谢你

3 楼


EVAL函数相当于将函数中的字符串,放到命令行中执行

我来回复

您尚未登录,请登录后再回复。点此登录或注册