2015-06-18 15 views
0

我遇到了句柄變量handles.scanOne的問題。 我初始化它handles.scanOne = struct([]);。相關回調是MATLAB GUIDE在2次回調後處理變量更新

function getButton1_Callback(hObject, eventdata, handles) 
loadText(handles, hObject, 1, 'Select the original scans') 
loadAxes(handles, 1) 

和loadText更新句柄變量,而loadAxes使用更新的變量。

function loadText(handles, hObject, region, displayMessage) 
... 
... 
handles.scanOne = struct('imageArray', imageArray, 'patientNumber', patientNumber, ... 
     'scanNumber', scanNumber, 'pathName', pathname, 'maxPixel', maxPixel); 
guidata(hObject,handles) 

然而,當我測試我的GUI第一次按鈕回調,handles.scanOne距離loadText更新,但不更新整個結構。當我再次按下按鈕時,handles.scanOne已更新爲整個結構。

編輯:我想我可能知道這個問題。傳入按鈕回調的handles結構仍然是原始的。 handles結構已經被loadText更新了,但是新的結構沒有被傳遞到按鈕回調中的任何東西。下面的鏈接有一個解決我的問題:http://www.mathworks.com/matlabcentral/answers/122423-gui-how-to-update-the-handles-when-calling-a-function-callback-inside-another-callback

+0

你有'getButton1_Callback'結尾的這個命令嗎? :'guidata(hObject,handles)' –

+0

我在'getButton1_Callback'的末尾沒有它,但是爲它所調用的'loadText'做。 – TryingToLearn

+1

在使用GUIDE的時候,你必須在所有子函數的最後有'guidata(hObject,handles)' – scmg

回答

0

我最終沒有存儲手柄結構的一切,而不是使用 setappdata(objectHandle, 'var', var)getappdata(objectHandle, 'var')。因此我不再需要使用guidata(hObject, handles),並且使得關於手柄結構的思考變得更加容易。