현재 Matlab GUI에서 팝업 메뉴를 통해 화면에 표시된 플롯을 변경할 수있는 기능을 구축 중입니다 ....이 isn ' t 문제 FYI!) 마우스로 플롯을 가로 지르는 세로선을 이동합니다 (x- 데이터는이 줄의 위치에서 반환됩니다). GUI를 처음 생성 할 때이 마우스 대화 형 라인을 만드는 데 아무런 문제가 없지만 사용자가 팝업 메뉴에서 다른 데이터 세트를 선택하면 사용자 대화 형 라인을 "다시 생성"할 수 없습니다.(Re-) Matlab GUI에서 드래그 가능한 라인 생성하기
handles.yline1 = line([x_start x_start],[y_min,y_max],'ButtonDownFcn',@(hObject,eventdata)postprocessingtry1('startdrag1_Fcn',hObject,eventdata,guidata(hObject)));
:
나는 GUI의 개방 기능에 다음 코드를 사용하여 드래그 라인을 구축
function startdrag1_Fcn(hObject, eventdata, handles)
set(handles.figure2,'WindowButtonMotionFcn',@(hObject,eventdata)postprocessingtry1('dragging1_Fcn',hObject,eventdata,guidata(hObject)));
... 그리고 "dragging1_Fcn"는를 반환하는 기능입니다 x 위치. handle.handle/설정 잘못되었거나 삭제 된 개체를 사용하여
오류 : 나는 PopupMenu로 콜백 함수 내에서 동일한 "handles.yline1 = ..."를 선언을 사용하려고하면
오류
가 발생합니다. postprocessingtry1에오류> dragging1_Fcn (라인 341)
세트 (handles.yline1 'XDATA'pt.CurrentPoint (1,1) * [1]);
(팝업 메뉴를 통해) 새 데이터 세트를 선택하고 플로팅 한 후 사용자 대화 형 라인을 재생성하는 방법에 대한 조언은 매우 감사 할 것입니다. 지금 생각해 보면, 아마도 팝업 메뉴 콜백 함수 내에서 hObject 및 eventdata를 참조하는 것이 문제와 관련이있을 수 있습니다.하지만 확실하지 않습니다!
여기
귀하의 콜백 함수 선언은 저에게 모호합니다. 왜 단순히'handles.yline1 = line (..., 'ButtonDownFcn', @ startdrag1_Fcn); 콜백 함수를 정의 할 때마다'postprocessingtry1'를 호출해야 할 이유가 있습니까? – Hoki
@Hoki와 동의하십시오. 그렇지 않으면 생각으로 'findobj ('Type ','Line ')'을 사용하여 현재 플롯에있는 행을 가져올 수 있습니다. 비어 있으면 다른 것을 만드시겠습니까? 나는 그것을 지금 시험 할 수는 없지만 그것이 시작 일 수있다. –