Pushbutton activated by Enter(return) key

26 views (last 30 days)
Hi,
I would like to ask you why doesn't work when I call funtion pushbutton1_Callback inside pushbutton1_KeyPressFcn. I have besidde other things buttons where I want them to react to Enter key when user Tabs to it (+ ofcourse when user just click at it). I thought that the simplest way would be to call pushbutton1_Callback in pushbutton1_KeyPressFcn,but obviously not...how caan I do this feature ?
Thanks, Peter
  5 Comments
Sean de Wolski
Sean de Wolski on 1 Nov 2012
How are you running this GUI? Are you just double-clicking on the figure? You need to run the *.m file associated with the figure:
>>myGUI
Petr
Petr on 2 Nov 2012
Edited: Petr on 2 Nov 2012
Yes I'm useing GUIDE and I am running my program from *.m file...even when I use handles it show same error...
I dont get why error mentiones handles...I dont want to use that i want to call a Callback function from another function...
Image Analyst method is also a good idea, but it's doing the same think...
For example this in my codeworks perfectly....
function uipushtool4_ClickedCallback(hObject, eventdata, handles) % hObject handle to uipushtool4 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
pushbutton2_Callback

Sign in to comment.

Accepted Answer

Petr
Petr on 7 Nov 2012
Solution was simple and enough elegant for me...
.
function pushbutton1_KeyPressFcn(hObject, eventdata, handles)
key = get(gcf,'CurrentKey');
if(strcmp (key , 'return'))
pushbutton1_Callback(hObject, eventdata, handles)
end
function pushbutton1_Callback(hObject, eventdata, handles)
%code to be executed
  1 Comment
Luis Santiago Hernández Castillo
Maybe this one could be a good option too:
%bhok is the handles of your pushbutton.
%xxx represents any data for ur code.
bhok.Callback=@(src,~)okcbd(src,xxx);
bhok.KeyPressFcn=@(src,event)bhokcall(src,event,xxx);
function bhokcall(src,event,xxx)
if event.Key=='return' %#ok<BDSCA>
okcbd(src,xxx)
end
end
function okcbd(src,xxx)
%code to be executed
end

Sign in to comment.

More Answers (2)

Sean de Wolski
Sean de Wolski on 31 Oct 2012
You can do this, you just need to feed it the correct inputs. You could probably find these by looking in the property inspector in GUIDE at the callback to see what GUIDE is feeding it.

Image Analyst
Image Analyst on 1 Nov 2012
Just put the inside of the click callback into its own function, like Button1Pressed() or something like that.
function handles=Button1Pressed(handles)
% whatever it does....
Then have the click and keypress callbacks both call Button1Pressed(). You don't need to pass in anything other than handles.

Categories

Find more on Migrate GUIDE Apps in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!