operator01.jpg

반갑습니다^^ 또 만났네요 LGS입니다.
오늘은 정말 계산기 GUI 끝 냅시다요~ ^^;;

gui0301.gif

myGUI.m를 MATLAB Editor에서 열어서 Show functions을 눌러 btn1_Callback 함수로 이동 후
Code를 작성합시다. 
GUI0302.png

지금 우리가 하고 싶은 것은 1 버튼을 눌렀을 때 Text Edit (Tag가 editAnswer)에 있는 숫자 맨 뒤에 '1'을 추가하고 싶은 거죠?
그럼 어떻게 해야 할까요? 넵 잘하셧어요~

editAnswer의 String을 가지고 와서(get 함수) 가지고 온 String 뒤에 '1'을 붙인 후([str '1'] 부분)
다시 editAnswer String을  1이 붙은 새로 바뀐 String으로 Update(set 함수)하면 되겠네요

GUI0303.png
get,set  함수 사용법은 다 아실태고~ 문자열 합치는 것도 아실 태고~ 맨 마지막에 있는 
guidata(hObject,handles)는 handles struct를 Update해주는 겁니다.



str = get(handles.editAnswer,'String'); 
set(handles.editAnswer,'String' , [str '1']);
guidata(hObject, handles);

자 이제 이 Code를 12345... 각각의 버튼에 해당하는 Callback 함수에다가 붙여넣기해서 수정해 줘야합니다.
set에서 [str '1'] 이 부분만 각 버튼에 맞게 수정해주세요
예를 들어 2버튼은 btn2_Callback에 set(handles.editAnswer,'String',[str '2']); 이런 식으루다가..
(아 점점 예를 잘못 골랐다는 생각이 들기 시작합니다.-_-;; 쿨럭)
1 2 3 4 5 6 7 8 9 0 + - * / . 까지 다 수정해주세요
(천재이신 분들은 아마 함수를 따로 하나만 드셨을 듯. 혹시 당신은 천재?!)
m-file editor의 녹색 화살표나 F5를 눌러서 실행 한번 해봅시다. ㅎㅎ
잘 되나요? 뿌듯하시죠? (눈물 좀 닦고 ㅜㅜ 엉엉)


이제 ← 버튼과 = 버튼만 남았네요. 거의 다왔습니다. 조금만 더 힘냅시다.
조금만 더 하면 GUI 계산기도 만들 줄 안다고 자랑할 수 있습니다!! 헤헤

← 버튼 부터 시작하겠습니다~
GUI0304.png

마찬가지로 get함수를 써서 edtiAnswer의 String을 가지구 오구요
str = get(handles.editAnswer,'String');

가지고 온 String의 맨 마지막 숫자를 날려버린 다음 
(지우시고자 하는 element를 empty matrix(빈 행렬)로 채우면 해당 element가 삭제됩니다)
str(end) = [];

또 마찬가지로 set 함수를 써서 Update 해주면 됩니다.
set(handles.editAnswer,'String',str);

그런데 문제가 한가지 있어요;;  ← 버튼을 마구 눌러서 String에 아무것도 없게 되면('')??
str(end) = [] 이부분이 에러가 납니다. 빈 행렬은 참조를 할 수 없습니다 -_-;;
그래서 if~ else~ 문으로 만약 가져온 String의 길이가 1이면  '0'을 채우고
아니면 맨 마지막 숫자를 시원하게 슝~ 날려버리면 되겠죠?
그래서 ← 버튼의 최종 콜백 함수는 위와 같이 되는 것이 였던 것이 였던 것입니다~
(length 함수는 vector나 matrix의 길이를 알아내는 함수입니다)


드디어 드디어 드디어 끝판왕!! = 버튼 !! (별거 없어요 ^^)

GUI0305.png

str = get(handles.editAnswer,'String');
똑같구요~

eval 이라는 함수는 입력변수로 받은 문자열(String)을 command window에서 그대로 실행하는 것과 똑같은 효과를 냅니다.
즉 eval('1+2')는   >>1+2 와 같다는 말이죵~ 아래 code 이해가시죠? 그쵸? 
set(handles.editAnswer,'String',eval(str));

자~ 모두 끝났습니다. 실행해보셨나요? 몇가지 개선 할 것들이 있지만 그래도 멋진 계산기가 만들어 졌네요^^
MATLAB Compiler를 사용하시면 exe 실행 파일도 만드실 수 있으니 참고하시기 바랍니다.



이상입니다. 따라 오시느라 수고하셨습니다. 
다음 강좌에서 뵙겠습니다. 이만 총총...

P.S.
GUI 계산기 Upgrade된 버젼 확인하기

profile