所以我有一个很大的遗留GUIDE GUI,我没有创建,但我的任务是扩展。 现在我总是在没有GUIDE的情况下手工编写我的GUI,并且一直在忙着清理这个并修复它,没有GUIDE重写整个内容。
除此之外,我还在_OpeningFcn中手动向GUI添加了新的GUI对象。 到目前为止一切顺利,他们应该按照我的预期添加回调和功能。
我遇到的问题是,如果我想在GUIDE回调中添加引用新元素的内容(即预先存在的回调),句柄结构(通常传递给GUIDE回调)不包含任何对象我在_OpeningFcn中添加了。 因此,我无法操纵旧回调中的新对象。
我认为这与我实际上没有在_OpeningFcn末尾保存/分配扩展句柄对象这一事实有关。但我不确定是否应该采用这种方式或如何做到这一点。
我希望我以简洁精确的方式描述了我所遇到的问题。 谢谢你的帮助。
答案 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
,则更改将不会停留。