Matlab将KeyListener添加到现有按钮

时间:2014-06-18 00:26:19

标签: matlab keylistener

我编写了一个Matlab程序,在按下特定按钮时计算不同的值(到目前为止只是"是"和#34; no")的数字。我试图添加一个键监听器,以便当我按下键盘上的 n 按钮时,或完成相同的操作。我尝试了addListenerkeyfunclistener函数,但似乎都没有工作。

以下是按钮的示例:

no=uicontrol(h_fig,'callback',countnonerve,'position',[.65 .07 .1 .08],'string','No','style','pushbutton','Units','normalized');

有什么建议吗?我不熟悉MatLab

会非常有帮助

1 个答案:

答案 0 :(得分:0)

您可以尝试使用图中的 KeyPressFcn 属性来记录/捕获单个按键:

function  keypress_Test
   h = figure;
   set(h,'KeyPressFcn',@keyPressCb);

   function keyPressCb(src,evnt)
        disp(['key pressed: ' evnt.Key]);
   end
end

上述代码可以粘贴到文件中并保存为 keypress_Test.m 。创建一个数字并将回调分配给 KeyPressFcn 属性。

它可以很容易地适应您的GUI。只要您可以访问图形句柄(可能是上面的 h_fig ),只需添加set(h_fig,'KeyPressFcn',@keyPressCb);并将 keyPressCb 代码粘贴到同一文件中。

如果您正在计算某个键被按下的次数,那么您必须将此信息保存在某个地方......可能是句柄结构。是这样的吗?如果是这样,那么您可以通过回调轻松访问它

function keyPressCb(src,evnt)
    disp(['key pressed: ' evnt.Key]);

    % get the handles structure
    handles = guidata(src);

    if ~isempty(handles)
       % do something here - increment count for evnt.Key

       % save the updated count
       guidata(src,handles);

    end
end

尝试一下,看看会发生什么!