GUIDE: Calling button press on key press
3 次查看(过去 30 天)
显示 更早的评论
Does anyone know of a way to enable the callback for a button press (as if it were clicked) when a user presses a specified key on the keyboard?
For example, if the user presses the left cursor, it will enable button A, but if they press the right cursor, it will enable button B?
Thanks!
0 个评论
采纳的回答
Oleg Komarov
2011-3-1
An example with WindowKeyPressFcn set at the figure level. Whenever you push 'p' te action is the same pushing the button:
EDIT (Per Jiro's suggestion in the comments)
function [] = gui()
S.fh = figure('units','pixels',...
'position',[500 200 200 100],...
'menubar','none',...
'name','gui',...
'numbertitle','off',...
'resize','off',...
'WindowKeyPressFcn',@pb_kpf);
S.pb = uicontrol('style','push',...
'units','pix',...
'position',[10 10 180 40],...
'fontsize',14,...
'string','Hi!',...
'call',@pb_call);
S.tx = uicontrol('style','text',...
'units','pix',...
'position',[10 55 180 40],...
'string','goodbye',...
'fontsize',23);
% Callback for pushbutton, prints Hi! in cmd window
function pb_call(varargin)
set(S.tx,'String', get(S.pb,'String'))
end
% Do same action as button when pressed leftarrow
function pb_kpf(varargin)
if if strcmp(varargin{1,2}.Key, 'leftarrow')
pb_call(varargin{:})
end
end
end
You may also want to give a look at a very similar question: gui for keyboard pressed representing the push button
Oleg
2 个评论
Jiro Doke
2011-3-1
In the last function "pb_kpf", if you examine varargin{1,2}.Key instead of varargin{1,2}.Character, you'll be able to capture "rightarrow" and "leftarrow".
In that case, be sure to use "strcmp" for the comparison:
if strcmp(varargin{1,2}.Key, 'leftarrow')
...
end
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Interactive Control and Callbacks 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!