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