【问题标题】:MATLAB GUIDE handles variable only updates after 2 callbacksMATLAB GUIDE 仅在 2 次回调后处理变量更新
【发布时间】:2015-06-26 00:38:32
【问题描述】:

我遇到了句柄变量handles.scanOne 的问题。 我初始化它handles.scanOne = struct([]);。相关回调是

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

loadText 更新handles 变量,而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

【问题讨论】:

  • getButton1_Callback末尾有这个命令吗? :guidata(hObject,handles)
  • getButton1_Callback 的末尾没有它,但它调用的 loadText 有它。
  • 在使用 GUIDE 时,所有子函数的末尾必须有 guidata(hObject, handles)

标签: matlab matlab-guide


【解决方案1】:

我最终没有将所有内容都存储在句柄结构中,而是使用了 setappdata(objectHandle, 'var', var)getappdata(objectHandle, 'var')。结果,我不再需要使用guidata(hObject, handles),它让思考句柄结构变得更加容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 2014-07-22
    • 2017-04-07
    • 1970-01-01
    相关资源
    最近更新 更多