我编写了一个Matlab程序,在按下特定按钮时计算不同的值(到目前为止只是"是"和#34; no")的数字。我试图添加一个键监听器,以便当我按下键盘上的 n 按钮时,或完成相同的操作。我尝试了addListener
和keyfunclistener
函数,但似乎都没有工作。
以下是按钮的示例:
no=uicontrol(h_fig,'callback',countnonerve,'position',[.65 .07 .1 .08],'string','No','style','pushbutton','Units','normalized');
有什么建议吗?我不熟悉MatLab
会非常有帮助答案 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
尝试一下,看看会发生什么!