본문 바로가기

Software/MATLAB

[MATLAB 연재] 15. GUI - Check Box와 Radio Button

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

Check Box와 Radio Button 사용하기 !

Check Box와 Radio Button의 사용법을 정말 초(?)간단히 알아보기위해 예제를 또 한번 만들어 보죠^^

Edit 박스를 두 개 넣고, Check Box 하나와 Radio Button 하나를 위와 같이 두겠습니다. TAG는 변경안했으니, 왼쪽 Edit 박스는 edit1이 태그일거고, 오른쪽은 edit2겠죠. checkbox의 Tag는 checkbox1, radiobutton은 radionbutton1이 tag입니다.

Check Box를 누르면 눌렀다고, 안눌렀으면 안눌렀다고, 메세지가 뜨도록, Radio Button도 마찬가지로 적용되도록 할 겁니다. 그래서 디폴트로 각 Edit Box의 String을 위와 같이 잡아 주겠습니다. 

이제 check box와 radio button의 callback함수를 위에서처럼 작성합니다. 일단 두 버튼의 상태를 받아오기위해

      get(handles.checkbox1, 'Value')

      get(handles.radiobutton1, 'Value')

로 받아주면 됩니다. 만약 checkbox나 radiobutton이 눌러지면 '1'이 눌러졌다가 해제되면 '0'이 반환됩니다. 그러니 if문에 넣어서 조건문으로 사용할 수 있겠지요. 그리고, 두개의 edit text의 속성 'String'을 변경해주면 글자가 바뀝니다. 그러면

위와 같이 눌렀는지 아닌지를 알 수 있습니다.

중복선택의 허용과 금지 !

방금했던 예제를 좀 확장해보겠습니다. 그전에 Panel이라는 걸 한번 써보도록 하죠.

버튼들을 보기좋게 묶어 줄 수 있습니다.^^.  그리고 inpector window를 열어서 보면, 나오는 속성중 title속성을 바꿔주면 됩니다.

저기까지만 하고, 실행해보시면, check box나 radio button이나 모두 두 세개씩 다 클릭이 된다는 것을 알 수 있습니다. 근데, 그러고 싶지 않을 때도 있잖아요. 그래서  왼쪽의 check box들은 중복선택이 가능하도록, 오른쪽의 radio button은 중복선택이 안되고 하나만 선택되도록 바꿔보곘습니다.

그리고, edit1을 지우고

위와 같이 edit text를 세 개를 두겠습니다. 글자크기는 14, 볼드체로, 글자크기는 노란색으로 설정했습니다. 지운 edit가 tag를 edit1로 가졌었기 때문에 새로만든 edit text는 tag가 edit3, edit4, edit5를 가지게 됩니다.

이제 check box의 callback함수를 보겠습니다. checkbox는 세 개지만, 하나만 보여드리면 나머지는 충분히 바꾸실 수 있을겁니다.(^^), 누르면, BackgroundColor 속성을 빨간색으로 해제하면, 흰색으로 두는 것이죠.

이제 문제는 radio button인데요. 하나만 선택될 수 있도록 말이죠.

위 radiobutton1의 callback함수를 보겠습니다. 역시 하나만 보여드리면, 다 알아서 하실 수 있을거라는(^^)

위에서, 먼저 radiobutton1이 선택된다면 (get(handles.radiobutton1, 'Value')) 나머지 버튼들의 선택을 해제해버리는 겁니다. 그게

      set(handles.radiobutton2, 'Value', 0)

입니다. radiobutton2의 속성을 '0'으로 즉, 해제하는 것이죠. 쉽죠??^^ 그런데, 만약 radiobutton 셋 다 해제된 상황도 만들고 싶네요. 쉽습니다. 위의 조건문에서 else문 처럼 꾸며주면 됩니다. 왜냐면, 위 코드상 이미 두개 이상이 선택되는 경우는 없거든요.

이렇게 해서 최종적인 프로그램을 만들었네요. 이번에는 CheckBox와 RadioButton 그리고, 지나가면서 Panel의 간단한 사용법을 익혀보았습니다.

untitled.m

untitled.fig

MATLAB 13. GUI 기초 - CheckBox, RadioButton.pdf

반응형