2014-09-12 31 views
0

所以我有一個很大的傳統GUIDE GUI,我沒有創建,但我的任務是擴展。 現在我總是用GUIDE手工編寫我的圖形用戶界面,並且一直忙於清理這個並修復它,而不用在GUIDE中重寫整個東西。如何訪問GUIDE回調中的非GUIDE句柄

因此,除了其他方面,我手動將新的GUI對象添加到_OpeningFcn中的GUI。 到目前爲止,他們盡我所能地添加回調和功能。

雖然我的問題是,如果我想添加引用GUIDE回調(即預先存在的回調)內的新元素的東西,處理結構(通常傳遞給GUIDE回調)不包含任何我在_OpeningFcn中添加的對象。因此,我無法操縱舊回調中的新對象。

我認爲這與我實際上沒有在_OpeningFcn的末尾保存/分配擴展手柄對象有關。但我不確定是否應該這樣做或如何去做。

我希望我已經以簡明和精確的方式描述了我所遇到的問題。 感謝您的幫助。

+1

Juderb的回答可能是你要找的東西,但是如果你真的對GUIDE過敏並且手動gui佈局很舒服,那麼你可以將整個figure/gui導出爲'.m'文件(菜單「文件/導出...「)。期望有一些工作可以重新調整和合並,但在此之後,您可以對'.fig'文件說再見,並將所有內容都包含在'.m'文件中。 – Hoki 2014-09-12 16:24:52

回答

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在函數結束時,變化不會堅持。

+1

非常感謝Juderb,這正是我需要的。 :) – FliXFantatier 2014-09-15 12:14:33

相關問題