2012-11-28 2 views
1

matlab을 사용 중입니다. 일부 키가 매핑 된 라디오 버튼이 필요합니다.MATLAB GUI에서 키보드 키 누르기 받기

다음 코드는 라디오 버튼을 표시하고 사용자로부터 값을 가져 오는 데 사용됩니다. 누군가가 나를 위해 여성과 2 남성을위한 키를 매핑 도와 드릴까요.

hgen_radio = uibuttongroup('visible','on','Units','pixels','Position',[1750 1045 170,50],'Title','Gender'); 
set(hgen_radio,'SelectionChangeFcn',@isMale_Callback); 
ugen0 = uicontrol('Style','Radio','String','Male',... 
    'pos',[10 5 50 25],'parent',hgen_radio,'HandleVisibility','off'); 
ugen1 = uicontrol('Style','Radio','String','Female',... 
    'pos',[70 5 70 25],'parent',hgen_radio,'HandleVisibility','off'); 
set(hgen_radio,'SelectedObject',[]); 

미리 감사드립니다.

답변

0

MATLAB에서 키 누르기는 UICONTROL이 포함 된 그림에 걸려 통과해야합니다. 이 작업을 수행하는 쉬운 방법이 하나 있습니다.

function catchKey(hgen_radio,varargin) 

switch varargin{2}.Key 
    case {'1','2'} 
     %to do: check if previous value was female, or male... 
     feval(get(hgen_radio,'SelectionChangeFcn')) 
    otherwise 
     %pass other keypresss through 
end 

참조 : http://www.mathworks.com/matlabcentral/answers/1450 또 다른 예를 들어 catchKey.m 같은 것을 가지고

hgen_radio = uibuttongroup('visible','on','Units','Normalized','Position',[.2 .2 .2 .2],'Title','Gender'); 
set(hgen_radio,'SelectionChangeFcn',@(x,y)disp('Clicked!')); 
ugen0 = uicontrol('Style','Radio','String','Male',... 
    'pos',[10 5 50 25],'parent',hgen_radio,'HandleVisibility','off'); 
ugen1 = uicontrol('Style','Radio','String','Female',... 
    'pos',[70 5 70 25],'parent',hgen_radio,'HandleVisibility','off'); 
set(hgen_radio,'SelectedObject',[]); 

set(gcf,'keypressFcn',@(x,y)catchKey(hgen_radio,x,y)) 

.

복잡성이있는 응용 프로그램의 경우 위와 같이 핸들을 전달해서는 안됩니다. 대신 setappdata 및 getappdata를 사용하여 APPDATA에있는 모든 핸들 값을 저장하십시오. 이것은 많은 코드를 명확하게 해줍니다. 예 :