我得到这个错误局部变量时:错误调用GUI MATLAB
Error in ==> APP>pushbutton2_Callback at 109
img=imread(FileName)
当我尝试使用pushbutton2_Callback
FileName
我收到错误提到
FileName
是pushbutton1_Callback
变量。
我得到这个错误局部变量时:错误调用GUI MATLAB
Error in ==> APP>pushbutton2_Callback at 109
img=imread(FileName)
当我尝试使用pushbutton2_Callback
FileName
我收到错误提到
FileName
是pushbutton1_Callback
变量。
您需要将变量FileName
从一个回调传递给另一个回调。为此,您可以将变量分配到pushbutton1
的'UserData'
字段。你pushbutton1_Callback
下的代码应该是这个样子:
FileName=uigetfile();
set(handles.pushbutton1,'UserData',FileName);
接下来,你需要在你的pushbutton2_Callback
在变量为:
FileName=get(handles.pushbutton1,'UserData');
img=imread(FileName);
如果要检查你的结果,你可以随时离开分号在线的末尾。
有一个通用的方法来存储数据与您的GUI在回调之间使用。您可以添加到一个手柄任意域对象,所以你可以把你的pushbutton1回调
handles.filename = FileName;
guidata(hObject,handles);
第二行是你需要把那个改变了手柄结构值的任何回调结束样板代码。
现在所有的回调都可以访问文件名。在特定情况下,在回调2,你会
img = imread(handles.filename);
当然,你可能要到另一个函数以后使用这张图片,这样你就可以将其存储在把手太
handles.img = img;
guidata(hObject, handles);
你可以用setappdata和getappdata有效地做同样的事情,而不必记住guidata位。 – Adrian 2010-05-28 14:43:36
但是你必须知道图形的句柄,对吗?我想你可以调用gcf,但如果用户在执行回调之前最大化另一个窗口,则会遇到问题。无论如何,我更喜欢点引用符号。 – Marc 2010-05-29 04:16:50