Updating Handles in WindowKeyPressFcn

4 Ansichten (letzte 30 Tage)
Matt
Matt am 2 Jan. 2013
Kommentiert: PIEASIAN ISB am 27 Aug. 2019
I'm trying to make a panel visible when the user presses the 'a' key. However the handles structure is not updating like I want it to.
function figure1_WindowKeyPressFcn(hObject , eventdata , handles)
switch eventdata.Key
case 'a'
set(handles.mypanel,'visible','on');
end
guidata(hObject,handles);
Any ideas why this is not causing the panel to become visible? Or a workaround?
Thanks, Matt
  1 Kommentar
PIEASIAN ISB
PIEASIAN ISB am 27 Aug. 2019
Hi, i am calling a callback function by using uimenu. Function name movx. In movx i define a windowkeypressfunc key1. I press desired key and perform the task upto this its ok. But how disable this windowkeypressfunc. I want disable this windowkeypressfunc and when i call it back it should be enabled. Kindly any suggestions help Thanks

Melden Sie sich an, um zu kommentieren.

Antworten (3)

Walter Roberson
Walter Roberson am 2 Jan. 2013
Bearbeitet: Walter Roberson am 2 Jan. 2013
Try adding a
drawnow()
after the set()
Do you want the panel to become visible on "a" or on "m" ? You coded "m"
Note: you do not need to guidata() in the case you show.
  2 Kommentare
Matt
Matt am 2 Jan. 2013
Sorry, it should be an 'a'. drawnow() did not work either. I use several set and get statements in callbacks and custom functions throughout the script. It is only in the WindowKeyPressFcn in which this became a problem. Any other suggestions? Thanks for your time.
Walter Roberson
Walter Roberson am 2 Jan. 2013
Can you confirm that the function is being activated? Such as by putting
disp(eventdata)
just under the function header?

Melden Sie sich an, um zu kommentieren.


Sean de Wolski
Sean de Wolski am 2 Jan. 2013
  • Stick a break point on the set() line. What does:
ishandle(handles.mypanel)
return?
  • Are you sure the panel exists and that its stacking order is above another panel that it might be hiding behind?
doc uistack %for more info

Jan
Jan am 2 Jan. 2013
I do not see the connection between the code and updating the handles struct. The handles struct is not modified at all in the code, therefore the guidata(hObject, handles) command is useless here. But there might be another problem, see FAQ: Incomplete handles struct in callbacks:
function figure1_WindowKeyPressFcn(hObject , eventdata , handles)
...
guidata(hObject,handles);
The handles struct from the input arguments is not the current version. If this causes your problems, use this:
function figure1_WindowKeyPressFcn(hObject , eventdata , handles)
handles = guidata(hObject); % Current version!
handles.myData = rand(5); % Any changes
guidata(hObject, handles); % Store updated struct

Kategorien

Mehr zu Environment and Settings finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by