0

我得到这个错误局部变量时:错误调用GUI MATLAB

Error in ==> APP>pushbutton2_Callback at 109 
img=imread(FileName) 

当我尝试使用pushbutton2_CallbackFileName我收到错误提到

FileNamepushbutton1_Callback变量。

回答

4

您需要将变量FileName从一个回调传递给另一个回调。为此,您可以将变量分配到pushbutton1'UserData'字段。你pushbutton1_Callback下的代码应该是这个样子:

FileName=uigetfile(); 
set(handles.pushbutton1,'UserData',FileName); 

接下来,你需要在你的pushbutton2_Callback在变量为:

FileName=get(handles.pushbutton1,'UserData'); 
img=imread(FileName); 

如果要检查你的结果,你可以随时离开分号在线的末尾。

1

有一个通用的方法来存储数据与您的GUI在回调之间使用。您可以添加到一个手柄任意域对象,所以你可以把你的pushbutton1回调

handles.filename = FileName; 
guidata(hObject,handles); 

第二行是你需要把那个改变了手柄结构值的任何回调结束样板代码。

现在所有的回调都可以访问文件名。在特定情况下,在回调2,你会

img = imread(handles.filename); 

当然,你可能要到另一个函数以后使用这张图片,这样你就可以将其存储在把手太

handles.img = img; 
guidata(hObject, handles); 
+0

你可以用setappdata和getappdata有效地做同样的事情,而不必记住guidata位。 – Adrian 2010-05-28 14:43:36

+0

但是你必须知道图形的句柄,对吗?我想你可以调用gcf,但如果用户在执行回调之前最大化另一个窗口,则会遇到问题。无论如何,我更喜欢点引用符号。 – Marc 2010-05-29 04:16:50