2014-12-19 1 views
0

둘 중 하나의 위치가 변경 될 때마다 '콜백 함수'가 자동으로 두 UI 객체의 값에 액세스 할 수 있도록 matlab에서 두 개의 슬라이더를 만들고 싶습니다. 기본적으로이 목표는 슬라이더를 사용하여 2 차원 변수 공간을 탐색하는 것입니다.Matlab의 2 UI (사용자 인터페이스) 객체 연결하기

문제는 각 슬라이더의 콜백 함수가 해당 값에 액세스 할 수있는 것입니다. 둘 다 액세스 할 수 있도록 노력하고 있습니다.

여기에 지금까지 내 코드의 관련 부분입니다 :

slider1= uicontrol('Style','slider','Min',1,'Max',N,'Position',[200 130 200 20]); 
slider2= uicontrol('Style','slider','Min',1,'Max',N,'Position',[200 100 200 20]); 
     set(slider1,'Callback',{@makeWin3, %relevant variables%); 
     set(slider2,'Callback',{@makeWin3, %relevant variables%);  

콜백 기능은 다음과 같습니다

function [] = makeWin3(hObj,notused, %relevant variables%) 
    n=round(hObj.Value);  %value of calling slider 
end 

어떤 도움을 주시면 감사하겠습니다. Thnx!

답변

1

나는 GUI의 핸들 구조에 두 슬라이더를 모두 저장하는 것이 안전하다고 생각합니다. 그러면 호출하는 모든 함수 또는 GUI 내에서 쉽게 액세스 할 수 있습니다. UI 구성 요소를 정의하는 동안을 만들 때

는 예를 들어, 그림을 가정하는 것은 또한 핸들 구조에 저장됩니다

%// Create figure 
handles.fig = figure(define figure properties here...) 

handles.slider1= uicontrol('Style','slider','Min',1,'Max',N,'Position',[200 130 200 20]); 
handles.slider2= uicontrol('Style','slider','Min',1,'Max',N,'Position',[200 100 200 20]); 
     set(handles.slider1,'Callback',{@makeWin3, %relevant variables%); 
     set(handles.slider2,'Callback',{@makeWin3, %relevant variables%); 

%// Store/update the handles in the handles structure with guidata. 
guidata(handles.fig,handles); %// Save handles structure of GUI. 

그런 다음 콜백 함수에서, 당신이 그렇게 같은 핸들 구조를 검색 할 수 있습니다

function [] = makeWin3(hObj,notused, %relevant variables%) 

%// Retrieve elements from handles structure. 

    handles = guidata(handles.fig); 
    n=round(get(handles.sliderX,'Value'));  %value of calling slider 
end 

또 다른 해결책은 콜백 함수의 인수로 handles 구조체를 전달하는 것입니다.

희망 하시겠습니까?

+1

@DankMasterDan 그래서 내 제안을 시도 했습니까? 작동 했나요? –

+0

예. Thnx 너무 많이 !!! – DankMasterDan

+1

굉장히 도와 줘서 기뻐! –