如何在GUIDE回调中访问非GUIDE句柄

时间:2014-09-12 12:52:10

标签: matlab callback matlab-guide handles

所以我有一个很大的遗留GUIDE GUI,我没有创建,但我的任务是扩展。 现在我总是在没有GUIDE的情况下手工编写我的GUI,并且一直在忙着清理这个并修复它,没有GUIDE重写整个内容。

除此之外,我还在_OpeningFcn中手动向GUI添加了新的GUI对象。 到目前为止一切顺利,他们应该按照我的预期添加回调和功能。

我遇到的问题是,如果我想在GUIDE回调中添加引用新元素的内容(即预先存在的回调),句柄结构(通常传递给GUIDE回调)不包含任何对象我在_OpeningFcn中添加了。 因此,我无法操纵旧回调中的新对象。

我认为这与我实际上没有在_OpeningFcn末尾保存/分配扩展句柄对象这一事实有关。但我不确定是否应该采用这种方式或如何做到这一点。

我希望我以简洁精确的方式描述了我所遇到的问题。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你在开始函数中添加GUI元素,然后在handles中将这些对象的句柄添加到_OpeningFcn结构。

如果是这种情况,您对handles本身所做的任何更改都将被视为纯粹的本地更改。要应用这些更改并使其在整个GUI范围内可用,只需在_OpeningFcn方法的末尾执行以下命令:

function YourGui_OpeningFcn(hObject, eventdata, handles, varargin)
    ...
    handles . button = uicontrol ( 'Style' , 'pushbutton' , ...
                                   'String' , 'My Fancy Button', ...
                                   'Position' , [315,220,70,25] );
    ...

    guidata ( hObject , handles )
end

如果您忽略在功能结束时使用guidata,则更改将不会停留。