我遇到了句柄变量handles.scanOne
的问题。
我初始化它handles.scanOne = struct([]);
。相关的回调是
function getButton1_Callback(hObject, eventdata, handles)
loadText(handles, hObject, 1, 'Select the original scans')
loadAxes(handles, 1)
和loadText更新handle变量,而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 :(得分:0)
我最终没有将所有东西存放在句柄结构中而是使用了
setappdata(objectHandle, 'var', var)
和getappdata(objectHandle, 'var')
。我不再需要使用guidata(hObject, handles)
作为结果,它更容易考虑句柄结构。