본문 바로가기

MATLAB/GUIDE quick start

MATLAB GUI example

MATLAB에서 GUI 프로그램 작성 예

MATLAB에서는 GUIDE라는 환경을 이용하여 GUI프로그래밍을 할 수 있다

다음은 MATLAB에서 GUIDE를 이용하여 간단한 계산기 프로그램을 작성하는 예이다.





GUIDE 윈도우에서 콘트롤을 더블클릭하면 아래와 같이 해당 콘트롤의 속성창이 나타난다

String -> 콘트롤의 기본 속성이름이며 텍스트박스에 디폴트로 보여질 문자열을 값으로 설정한다

Tag -> 해당 콘트롤이 프로그램 소스코드에서 사용될 때, 핸들을 저장할 변수의 이름을 설정한다


다음은 완성된 GUI의 모습이다.

위와 같이 설정한 후에 SAVE > RUN을 실행하면 *.fig, *.m 파일이 생성되며, *.fig는 레이아웃, *.m은 소스코드가 저장된다

위에서는 버튼이 눌렸을 때 호출되는 콜백함수를 편집하여 텍스트박스에 입력된 수를 이용하여 덧셈을 하면 된다

버튼이 눌렸을 때 호출되는 함수의 파라미터 설명

hObject : 이벤트가 발생한 콘트롤의 식별 핸들

eventdata : 차후 버전에서 사용할 예정인 데이터

handlers : 프로그램에서 사용하는 모든 콘트롤의 핸들을 저장한 구조체


버튼에서 마우스 우측을 눌러 View CallBacks > CallBack 를 선택하면 해당 콘트롤의 콜백함수 정의부분으로 안내되므로 이때 편집하면 된다. 혹은 *.m 파일에서 직접 찾아서 아래와 같이 편집하면 된다

% --- Executes on button press in btnExecute. function btnExecute_Callback(hObject, eventdata, handles) % hObject handle to btnExecute (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) strNum1 = get(handles.num1,'String');% num1은 콘트롤의 Tag속성에 설정한 값이다. String은 내부 문자열을 나타내는 속성 num1 = str2double(strNum1); strNum2 = get(handles.num2, 'String'); num2 = str2double(strNum2); num3 = num1+num2; disp(sprintf('%d + %d = %d', num1, num2, num3)); set(handles.num3,'String',num2str(num3)); % 콘트롤에 새로운 값을 동적으로 설정한다