1

私はmatlabを使用していますが、いくつかのキーがマップされたラジオボタンが必要です。

次のコードは、ラジオ ボタンを表示し、ユーザーから値を取得するために機能します。女性用のキー 1 と男性用のキー 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',[]);

前もって感謝します!

4

1 に答える 1

0

MATLAB では、キーの押下は UICONTROL を含む Figure によってキャッチされ、通過する必要があります。これを行う簡単な方法の 1 つを次に示します。

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))

catchKey.m は次のようなものです。

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を参照してください。

複雑なアプリケーションの場合、上記のようにハンドルを渡すべきではありません。代わりに、setappdata と getappdata を使用して、すべてのハンドルの値を APPDATA に格納します。これにより、多くのコードが大幅に明確になります。例 http://www.mathworks.com/help/matlab/ref/setappdata.html

于 2012-11-28T13:28:27.347 に答える