2012-09-11 3 views
0

코드 상단에있는 42 개의 상수의 상태에 따라 다양한 방법으로 실행할 수있는 함수가 있습니다. 지금까지 다른 조건에서 함수를 실행하려면 간단히 MATLAB 코드를 열고 코드 시작 부분에서 상수를 조정하십시오.GUI에서 전달하는 인수

42 개의 상수는 계속 추적해야하며, 우연히 켜져있는 특정 스위치로 실험을 실행하고 있습니다. 분명한 해결책은 입력을 시각적으로 한 곳에서 볼 수있는 GUI를 만드는 것입니다. GUI는 파라미터 셋팅 윈도우 일 것입니다. 하단에 커다란 'Go'버튼이 있습니다.이 버튼은 입력 (42 개 모두!)을 받아 내 주요 기능으로 전달합니다.

멋진 GUI를 작성하는 데 사용했던 GUIDE를 보았습니다. 내 함수를 실행하기위한 버튼을 얻을 수 있었지만, 텍스트 상자와 체크 박스 상태에 입력 된 실제 변수를 주 함수로 전달하는 데 어려움을 겪고 있습니다.

'콜백'과 관련이 있다는 것을 알고 있지만 설명서가 명확하지 않고 변수가 현재 창의 내용을 조정하는 GUI를 작성하는 것에 더 관심이있는 것으로 보입니다.

기본 예로서 확인란을 사용하고 있습니다. 체크 박스를 클릭하면 checkbox1_Callback (hObject, eventdata, handles) 함수가 실행된다는 것을 알고 있습니다. 내가 수표를 클릭 할 때마다

state = get(hObject,'Value') 

이 그 상태를 말하는 메시지를 팝업이 변경되었습니다 : 그것은 다음과 같은 방법으로 기능 중에 설정되는 변수 '상태를'반환하도록 나는이 기능을 수정 한 상자. 물론, 이런 일이 발생하자마자 함수가 끝나고 변수가 파괴됩니다. 변수를 다른 곳에서 수신 할 방법이없는 것처럼 보입니다. .m 코드에는 어디에서나 checkbox1_Callback 함수에 대한 호출이 포함되지 않으므로 입력을받을 수있는 위치를 알 수 없습니다.

나는 '이동'버튼을 클릭 할 때 checkbox1_Callback 함수를 호출 할 수 있었으면 좋겠다고 생각했지만 콜백에 전달할 인수를 모르겠습니다.

분명히 나는 ​​여기에 근본적인 것이 빠졌지 만 문서화가 쉽지는 않습니다! 모든 포인터는 감사하겠습니다.

답변

1

'GO (진행)'버튼에는 하나의 콜백 만 있으면됩니다. 이미이 정리 것 같은

그것은 소리 - 그래서 당신은 아마 같은 기능을 가지고 : 당신이 "이동"버튼을 누르면 실행됩니다

function go_Callback(hObject, eventdata, handles) 

합니다. 가지고 있지 않다면, "Go"버튼을 오른쪽 클릭하고 "View Callbacks"-> "Callback"을 선택하여 GUIDE에서 생성하십시오.

여기에서 다른 GUI 구성 요소의 데이터를 '가져올 수 있습니다.'

threshold = get(handles.threshold, 'String'); 

마찬가지로, 체크 상자 : 당신이 "한계"라는 텍스트 상자가있는 경우 예를 들어, 내가 가이드를 사용하므로하지 않았다

checked = get(handles.my_checkbox, 'Value'); 
0

나는 바로 귀하의 질문에 대답 할 수 없다. 그러나, 나는 정상적인 MATLAB 함수에서 시작 화면을 '손으로'프로그램하는 것을 고려할 것이다. 그런 다음 GUI에 표시되는 함수 안에 모든 UI 구성 요소를 선언 할 수 있습니다. GO 버튼에 대한 콜백은 로컬 함수로 선언되므로 모든 UI 컨트롤에 액세스 할 수 있습니다.GO 키를 누르면 uicontrols의 상태를 얻고 함수를 실행하기 만하면됩니다.

function setup_screen 

init_figure = 1; 
h_fig = figure(... 
    'BackingStore', 'on',... 
    'DoubleBuffer','on',... 
    'Render', 'zbuffer',... 
    'Name', 'TecMod - Process Manager',... 
    'NumberTitle','off',... 
    'MenuBar','none',... 
    'DockControls', 'off',... 
    'Toolbar','none',... 
    'units', 'characters',... 
    'Position',[10 10 30 20],... 
    'Units','characters'); 

hp_config = uipanel(... 
    'Title','Setup',... 
    'units', 'characters',... 
    'Position',[1 1 28 18]); 

hu_info = uicontrol('parent', hp_config, 'style','pushbutton',... 
    'units','characters', ... 
    'TooltipString', 'Run the function',... 
    'tag', 'hu_info',... 
    'String', 'GO',... 
    'Position', [1 1 25 3],... 
    'Callback', @buttonCallback); 

hu_choice = uicontrol('parent', hp_config, 'Style','checkbox',... 
     'units', 'characters',... 
     'Position',[1 10 25 3],... 
     'String', 'Checkbox1',... 
     'Value', 1); 

    function buttonCallback(src,evt) 
     if src==hu_info 
      display('event from GO button'); 
      % get ui controls states 
      display(['checkbox state ' num2str(get(hu_choice, 'Value'))]); 
      % call your function with chosen parameters 
     end 
    end 
end