Hi everyone,
I have a problem regarding the KeyPressFcn of a figure. I try to make a GUI in which I want to control something with the keys. If the focus is on the main figure then this is possible but after I press a button and the focus moves to the button, the KeyPressFcn doesn't activate. How can I move the focus back to the main window (to the background) after I press a button, in order to be able to record again the pressed keys?
Here is a small example in which after the button is pressed the keys are not recorded until I click with the mouse somewhere on the background and the focus moves again to the main window.
function crazy_gui
f = figure('KeyPressFcn', @(handle,event) disp(event.Key), 'Position',[500,500,500,500]);
hButton = uicontrol('Style','pushbutton','String','Crazy Button',...
'Position',[200,200,100,100],...
'Callback',@button_Callback);
function button_Callback(handle,event)
disp('Focus changed to the button! Now you cannot record the pressed keys');
end
end
Thanks,
Razvan

 采纳的回答

Matt Fig
Matt Fig 2011-5-21

1 个投票

Try the WindowKeyPressFcn instead.

2 个评论

Thanks a lot!
And how can I disable the WindowKeyPressFcn property while a slider is active, such that in that case the keys control only the slider and don't do anything else outside the slider?

请先登录,再进行评论。

更多回答(1 个)

Norbert
Norbert 2020-10-15

4 个投票

Thanks a lot for your hint Matt, did not work out in my case.
in order to get the function active i always have to click on the figure.
Best
Norbert

类别

在 帮助中心 和 File Exchange 中查找有关 Functions 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by