본문 바로가기

Software/MATLAB

[MATLAB 연재] 12. GUI 시작하기

본 강좌에 사용되는 MATLAB은 버젼 7.9.0 (R2009b)을 대상으로 합니다.

MATLAB의 GUI 시작하기 !

MATLAB에서도 GUI 환경을 구축할 수 있습니다. 여기서 구차하게 GUI란 무엇인가?? 라는 말은 좀 그러니까 그건 위키디피아에 넘겨두고 [관련글], MATLAB에서 GUI를 어떻게 다루는지에 대해 이야기 해보겠습니다. 

위에 표시된 아이콘을 누르든지, 혹은 command window에서 guide라고 입력하면

이런 창이 하나 뜹니다. Blank GUI를 선택하고 OK버튼을 누르면

위의 창이 뜹니다. 음... 왼쪽에 표시된 아이콘들이 어떻게 되는지 잘 모르니까, 설정을 좀 만지죠. 위 창의 메뉴에서 File을 선택하고, preference를 선택하면

위의 화면이 나오는데요. 여기서 표시된 부분 이름을 보여라??는 부분을 체크하시고 나면

이렇게 각 아이콘들의 이름이 나옵니다. 많은 설명을 하기 전에 빈 공간을 팔레트라고 하는데요. 크기를 조절한 방법은

위에 표시된 부분을 마우스로 클릭하고 옮겨보시면 크기를 조절할 수 있습니다.

위치 간격 조절하기 !

Push Button을 하나 가져다 놓고 CTRL+C, V로 위와 같이 아무렇게나 배치를 해보죠. 다시 Push Button을 가져와도 되지만, 그러면 초반에 일정크기로 만들어지지 않아서 말이죠.^^ 우리는 처음이니까 복잡하지 않게 간단히 접근해보죠^^ 그리고, 위에서 처럼 외쪽 세개를 선택하시고

위에 표시된 Align 어쩌고 하는 아이콘을 눌러줍니다. (혹은 마우스 오른쪽 버튼으로 선택하셔도 되구요)

그러면 위와 같은 창이 뜹니다. 사실 뭐 그림만으로도 알 수 있는데요. 그래도 처음이니까...^^ 위와같이 Vertical은 off로 두고 Horizontal만 OFF 옆에 있는걸로 선택해 주면

이렇게 정렬이 잘 됩니다.

그리고 Vertial에서 일정간격 (off 밑에)을 유지하도록 하면 위 그림처럼 되죠. 

간단한 예제 학습하기 - Push Button, Edit Text, Static Text, Axes!

방금 위에서 작업하셨던 창을 닫고 다시 GUIDE 명령으로 새창을 띄우세요.

그리고 위의 그림처럼 마우스로 가져다가 놓아 보죠. 크기나 이런건 크게 신경쓰시지 않아도 됩니다. 하다보면, 다음에 할땐, 좀 신경쓰는게 보기 좋구나.. 하고 스스로 알게 됩니다.^^ 

- Static Text

Static Text를 가져다 팔레트에 놓으셨자나요..?? 그걸 더블 클릭하거나, 혹은 마우스 오른쪽 버튼에서 Inspector를 선택하거나, 혹은 클릭을 한번만하고 도구모음에서 Inspector를 선택하면 위와 같은 창이 뜹니다. 그 중 위에 표시된 String이라고 되어 있는 부분을 수정하시면, 화면 상에 보이는 글자라 바뀝니다. Static Text는 프로그램 구동상에서는 아무 역활을 하지 않는 고정된 글자열입니다. 위에 표시된 부분을 아래에 처럼 수정하세요.

제가 Static Text를 두개 가져다 놓았는데요. 그리고 위에 나타난 부분을 수정하시면, 폰트 변경이나 글자크기 조절, Bold, 색깔 등등을 수정하실 수 있습니다. 앗.. 하나 더 음... 본래 만드신것에서 모두 선택 CTRL+A을 하셔서 좀 아래로 내리서고 아래처럼 제일 위에 Static Text를 하나 더 두죠. (아무래도 제목이 있어야할 듯 해서요^^)

이제 Static Text 3개를 위와 같이 한번 수정해 보세요^^ 그리고 나면 이제 저장을 한 번 해보죠. GUI가 뭔지 이때쯤 한번 실행도 해볼겸 말이죠

저장 버튼을 누르면 이름을 지정하도록 하는데요. testGUI라고 입력하고 나면

갑자기 어떤 코드가 잔뜩 들어가 있는 m-file 에디터가 나타납니다. 뭐 놀라실건 없습니다. 그냥 놔두고

실행 버튼도 한번 눌러보죠

이렇게 되네요^^ 아직... 아무 기능도 없습니다.^^

- Edit Text

이제 Edit Text를 좀 건드려야겠네요. 그전에 제가 할려는 예제가 무엇인지 아시겠죠?? 바로, sin(2*pi*F1)+sin(2*pi*F2)를 그릴려고 하는 것입니다. 그 중 F1과 F2는 사용자에게 입력을 받게끔 하는거죠. 그래서 Static Text로 F1, F2는 여기서 입력이라고 말해 준 것이구요. 실제 사용자는 

Edit Text에 입력하도록 하는 것이죠. 예... Edit Text는 사용자에게 변수를 입력받도록 하는 역활을 합니다. 그러면 어떻게?? 위의 Edit Text 중 왼쪽걸 더블클릭해보면

이렇게 Inspector가 뜬다고 했죠??^^ 거기서 StringTag가 보이실 겁니다. String을 바꾸시면, 화면상에 나타나는 Edit Text라는 글자가 바뀝니다. Tag는 그 값을 저장하는 변수의 이름이라고 생각하시면 됩니다. - 누차 말씀드리지만, GUI환경에서 세세한 부분은 직접 책과 Help 문서를 이용하시는게 더욱 좋습니다. 전 그저 빠르고 쉽게 처음 접근하는 분들께 도움을 드릴려고 하는 것이니까요...- 그래서 저 부분을

이렇게 바꿔줍니다. Tag를 F1이라고 둔건 제가 현재 할려는 예제를 보니 아시겠지만, 왜 String을 1이라고 두는가하면, 초기값이라고 생각하시면 됩니다. ^^

그리고, 그 옆의 Edit를 여셔서 위와 같이 수정하시면 됩니다. 

- Push Button

이제 사용자에게 입력받는 부분이 끝났네요. 그리고 Push Button을 누르면 그리도록 해야겠네요. Push Button을 더블클릭하셔서 Inspector 창을 여시고

string은 PLOT으로 변경하시고, Tag는 뭐.. 그냥 놔두죠...^^ 우린 Push Button이 하나 뿐이니까요... 그리고, Push Button을 선택하고 마우스 오른쪽을 눌러 Edit m-file을 선택하시든 혹은 저장할 때 같이 떴던 m-file 에디터를 보시면 function pushbutton1_Callback 이라는 구문이 있습니다. 그 곳에 아래 코드를 입력하시면 됩니다.

코드를 설명해 보겠습니다. 먼저, 사용자에게, F1, F2를 받아와야되자나요.. 사용자가 입력했든, 혹은 제가 입력해둔 초기값을 사용하든지 간에 Edit Text에 있는 수치를 받아야합니다. 그것이

get(handles.F1, 'String')

입니다. GUI 내에서 어떤 도구-Edit Text든, 뭐든-를 건드릴려면 handles이라는 객체를 거쳐야(?)하는 데요. 그냥 저렇게 쓰자고 일단 생각하세요^^ 그래서 그곳(F1, F2)에 있는 숫자를 가져와야합니다. 문제는 걔네들이 문자라는 것이지요. 그래서 str2double 이라는 명령으로 문자를 숫자(double 형의)로 변경하는 것입니다. 그러면, f1, f2를 받는 부분은 아셨을테고.... 그림을 그리기 위해 그 아래 부분을 시간범위를 잡고, y를 도출하도록 하였지요. 마지막이 남았네요. 그려야죠...^^ GUI 에디트창에서 axes를 가져다 놨자나요. 그걸 더블클릭해서 tag를 확인해보면 axes1입니다. 그래서

plot(handles.axes1, t, y)

라고 명령을 주어서 axes1에다가 plot하라고 명령을 주는 것입니다. 

저장하고 실행해서 적절한 값을 넣고, PLOT이라고 이름붙은 Push Button을 누르면 그림이 나타납니다.

testGUI.fig

testGUI.m

MATLAB 10. GUI 기초.pdf

반응형