커다란 GUI에서 필수적인 구조는 매우 초보적이며 슬라이더와 편집 상자 인 두 개의 상호 연결된 컨트롤 (각각 하나는 다른 하나의 값을 업데이트 함)으로 간단하게 줄일 수 있습니다. 그들이 공유하는 가치는 음모 만들기에 사용됩니다. 다음 코드를 실행하면 슬라이드를 이동하거나 상자를 편집하여 값을 한 번만 변경할 수 있습니다. 두 번째로 오류가 발생합니다. 주요 질문은 다음과 같습니다. 왜? 대신에 어떻게 GUI를 사용해야합니까? 이 경우 guihandles가 작동하지 않는 이유는 무엇입니까?
function GuiHandleShare1
handles.figure=figure;
handles.edit=uicontrol('Style','Edit',...
'Position',[5 5 50 20],...
'Callback',@edit_callback,...
'Tag','edit');
handles.slider=uicontrol('Style','Slider',...
'Position',[55 5 500 20],...
'Callback',@slider_callback,...
'Tag','slider');
handles.axes=axes('OuterPosition',[0.1 0.1 0.8 0.8],...
'Tag','axes');
function plotter
handles=guihandles;
plot(handles.axes,[0 1],[0 str2num(get(handles.edit,'String'))])
function edit_callback(h,eventdata)
handles=guihandles;
set(handles.slider,'Value',str2num(get(handles.edit,'String')));
plotter
function slider_callback(h,eventdata)
handles=guihandles;
set(handles.edit,'string',num2str(get(handles.slider,'Value')));
plotter
나는 guihandles의 코드로 파고에 의해 답을 찾기 위해 노력했지만 단지 guidata, 그것은 사용할 수없는 소스있는 등 getappdata, setappdata, 래퍼, (matlab에 R2008b)입니다.
이미 이런 종류의 GUI에 대한 다른 해결책을 알고 있습니다. 1- guihandles, guidata 또는 다른 종류의 것을 사용하는 대신 전역 변수를 사용합니다. 2 중첩 된 함수를 사용하십시오.
중첩 된 함수는 주 함수 작업 영역을 정적 작업 영역으로 만들기 때문에 작업하고있는 경우 옵션이 아닙니다. 이것은 응용 프로그램에서 변수를 관리해야하기 때문에 내가 원하는 것이 아닙니다. 전역 변수 사용이 끝났습니다. 핸들을 필요로하는 모든 함수 내에서 핸들을 전역 변수로 선언 했으므로 제대로 작동합니다. 이것에는 어떤 단점이 있습니까? 우리가 전역 변수를 사용할 수 있다면, 왜 MATLAB은 guihandles, guidata 등과 같은 명령을 내놓았 을까요? 그렇지 않으면 GUI는 축과 관련된 첫번째 플롯 후 새로운 그림과 태그를 생성, 맨 처음에 당신의 축 정의에
'NextPlot' ,'ReplaceChildren'
:
각 플롯 앞에 축을 정의해야한다고 생각합니다. 즉, '핸들'을 추가하십시오.축 '을 플로터 기능 내에서 플롯 선 앞에 한 줄씩 표시합니다. 그렇지 않으면, 그는 아마도 어딘가에서, 같은 그림이나 다른 그림으로 그것을 그리거나 충돌하려고 시도 할 것입니다. – Adiel