我得到這個錯誤局部變量時:錯誤調用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