2016-08-31 3 views
1

GUI_main이라는 GUI가 있는데 여기에 pushbutton_GUI_main이라는 푸시 버튼이 있습니다. 나는 현재 다음 콜백 함수 구현이 :GUI 푸시 버튼을 만드는 방법 다른 GUI를 열고 닫으십시오

GUI_sub
function pushbutton_GUI_main_Callback(hObject, eventdata, handles) 

GUI_sub 

당신이 pushbutton_GUI_main를 클릭 할 때 열리는 또 다른 GUI입니다.

function pushbutton_GUI_main_Callback(hObject, eventdata, handles) 

if (GUI_sub == open) 
    close(GUI_sub) 
else 
    GUI_sub 

입니다, 내가 을 열 수 있기를 원하고 가까운 GUI_subpushbutton_GUI_main으로 그러나, 나는 다음과 같은 일을 할 수 있습니다.

+0

합니까'체크 아웃 할 수 있을까? 그렇다면 GUI_main 핸들에 해당 핸들을 저장 한 다음 상태를 확인할 수 있습니다. 정확하게 구현하지 않았기 때문에 정확한 구현을 도울 수 없습니다. – Trogdor

답변

1

으로 excaza이 GUI에서 데이터 나 정보를 전달할 수있는 좋은 방법입니다 처리 말한다. 또 다른 방법은 GUI 핸들을 저장하지 않으려는 경우 GUI_sub를 독립적으로 만들 수있는 경우 그림 핸들을 검색하는 것입니다.

subGuiH = findall(0,'Name','GUI_sub'); 
if ~isempty(subGuiH) 
    close(subGuiH); 
end 
GUI_sub; 

검색이 당신의 MATLAB 버전에 따라

findall(0,'Type','figure','Name','GUI_sub') 

를 추가로 축소 될 수있다, 당신은 또한 자신에 대한 핸들을 반환 GUI_sub` 그루

2

하위 GUI를 참조하려면 개체 핸들이 필요합니다. GUI_sub이 GUIDE로 빌드 된 GUI라고 가정하면, 선택적 핸들 출력과 함께 기본적으로 프로그래밍됩니다.

가이드 GUI에 대한 순진 구현은 다음과 같을 것이다 :

function pushbutton1_Callback(hObject, eventdata, handles) 
if ~isempty(handles.figure1.UserData) 
    close(handles.figure1.UserData); 
    handles.figure1.UserData = []; 
else 
    handles.figure1.UserData = sub_GUI; 
end 

의 대부분은 (? 어쩌면 모든) MATLAB의 그래픽 객체는 기본적으로 UserData 필드가 있습니다. 이 간단한 예제에서는 기본 그림 객체 인 UserData을 사용했습니다. 이 데이터를 저장/전송하는 다른 방법에 대해서는 Share Data Among Callbacks을 참조하십시오.