I have a GUI consisted of a slider, a press button and 4 axes. I have placed the WindowScrollWheelFcn and I get the following error
"Warning: Setting the "WindowScrollWheelFcn" property is not permitted while this mode is active.
> In matlab.uitools.internal.uimodemanager>localModeWarn (line 211)
In matlab.uitools.internal.uimodemanager>@(obj,evd)(localModeWarn(obj,evd,hThis)) (line 86)
In fresh>Load_image_Callback (line 320)
In gui_mainfcn (line 95)
In fresh (line 42)
In matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)fresh('Load_image_Callback',hObject,eventdata,guidata(hObject)) "
Any help?

 채택된 답변

Rik
Rik 2018년 6월 10일

1 개 추천

You have the target figure open. You probably have the selector mode on (the mouse cursor icon in the menu bar), or maybe the pan mode. You need to have the current mode turned off if you want to initialize some callback that may interfere with it.
The only time I've seen this error myself, is when I wanted to set a ButtonDownFcn while the selector mode was on.
This is an example of why it is generally a good idea to have a GUI as locked down as you can while you set all the properties. (I often even set Visisble to off when initializing to circumvent any user interaction messing up the settings)

댓글 수: 12

Stelios Fanourakis
Stelios Fanourakis 2018년 6월 10일
I don't understand much of those things as I am a new to GUI in general. Can you please explain me what are the on and off and how can I have it locked down as you do?
There is a menu bar in each figure with some common controls: pan, zoom, rotate, etc. One of those is activated and blocks setting of the callback. Making sure none of them is activated should solve your issue.
The code below is a pattern I frequently use. I try to set all callbacks and other properties before allowing the user to interact with my figure by setting the Visible property to off and after I have set all the properties and callback setting it back to on.
hfig=figure(1)
clf(hfig)%clear any old content, reset figure
set(hfig,'Visible','off')%hide figure to prevent user interaction
%you can also use hfig.Visible='off'; >=R2014b
set(gcf,'menu','none')
%load data, set object properties, set callbacks
set(hfig,'Visible','on')%show figure and wait for user interaction
Stelios Fanourakis
Stelios Fanourakis 2018년 6월 10일
편집: Stelios Fanourakis 2018년 6월 10일
Actually the fig I created in guide do not have any menu bar or controls. It is just a plain figure with 4 axes, a button and a slider
Rik
Rik 2018년 6월 11일
That's why I don't use GUIDE, it causes a lot of trouble in return for not much help.
Have you tried closing the fig, re-opening and then setting the callback?
You can get the menu bar back by setting the menu property to 'figure'. then you might see which mode is enabled.
If none of this works, please edit your question to include a zip file with all relevant files and tell us which button to push to trigger the error.
Stelios Fanourakis
Stelios Fanourakis 2018년 6월 11일
How do I set menu property to 'figure'?
Rik
Rik 2018년 6월 12일
If your GUI is the last figure you clicked on, gcf will give you a handle to that figure. So set(gcf,'menu','figure') should work.
Stelios Fanourakis
Stelios Fanourakis 2019년 9월 25일
Rik may you help me again please? After a year I still get the same error when I try to use mouse wheel to synchronize the slider movements. How do I solve this error? Where am I supposed to put that line?
Thanks in advance
Rik
Rik 2019년 9월 25일
I assume this relates to this new question, in which case the answer is that you need to disable whatever interactive mode you currently have enabled in order to set a callback.
Stelios Fanourakis
Stelios Fanourakis 2019년 9월 25일
I don't know what interactive mode I currently have enabled. How can I find out?
Stelios Fanourakis
Stelios Fanourakis 2019년 9월 25일
When I go with my cursor above the axes I see the rotation is enabled. When I manually deselct it then the scrolling becomes zoom in/out.
I don't want neither of those. I want to be used as it used to. Scrolling should move the sliders
I used this
As
disableDefaultInteractivity(handles.axes1);
But still the same error
Rik
Rik 2019년 9월 25일
I think it makes more sense to continue this discussion in your new thread. You should also mention which release you're using.
It might also be helpful to attach an example. Make sure to restart Matlab, and describe every step you take from there to reproduce the issue.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Steven Lord
Steven Lord 2018년 6월 12일

0 개 추천

Before you tried to set the WindowScrollWheelFcn, did you turn zoom on, pan on, or rotate3d on? See the Tips section of the documentation pages for the zoom, pan, or rotate3d functions. Each says "Do not change figure callbacks within an interactive mode." The WindowScrollWheelFcn is a figure callback.

카테고리

도움말 센터File Exchange에서 Interactive Control and Callbacks에 대해 자세히 알아보기

질문:

2018년 6월 10일

댓글:

Rik
2019년 9월 25일

Community Treasure Hunt

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

Start Hunting!

Translated by