GUI slider value change when majorstep is changed from default?

Hello,
i experienced a very strange behaviour of GUI (made with GUIDE) sliders, If I change the major step of a vertical slider, e.g. 0.02 and the minor step is 0.01, the value of the slider changes from 0 to 0.08. The inspector in guide shows 0 for the value, but the thumbbar of the slider is not at the bottommost position. If i start the GUI, the thumbbar is still at the same position, and if i check the value of the slider, it is 0.08 instead of 0.
Test it with a blank gui, add a vertical slider:
  • max: 1.0
  • min: 0.0
  • sliderstep: [0.01,0.02]
  • x: 0.01
  • y: 0.02
  • value: 0.0
when you start the gui, the slider is value is not 0.0

6 个评论

Are you talking about GUIDE or about creating the GUI programmatically? How and where do you define the initial value?
i make the GUI with GUIDE, sorry i forgot to mention that
I opened a new blank GUIDE gui. Added a slider, made the settings you did and ran it with no wierdness.
R2012b, Win7 Sp1 x64...
To be sure, I added disp(get(hObject,'Value')) to the createFcn and callback and saw only expected results
I tested on a win7 and an xp machine, both r2012b, no difference.
in GUIDE, the position of the slider changes immediatly as i modify the majorsliderstep, but the value is still 0.0 in the inspector.
with default settings: http://i48.tinypic.com/111hspd.jpg
after changing sliderstep: http://i45.tinypic.com/35250rr.jpg
This seems to happen only when the major step is smaller than the default one and it's a vertical slider. I can't reproduce this with a horizontal slider.

请先登录,再进行评论。

回答(3 个)

% In your opening function insert
% slider1 is your slider's tag
set(handles.slider1,'value',0,'Min',0,'Max',1,'Sliderstep',[0.01,0.02])

4 个评论

I already tried that, and it has no effect. I can see that the slider is not at 0 in guide, i dont even have to run the gui. I guess this is a bug in matlab.
Check if you are not running different files, and be sure they are in your working folder.
Thank you, i am not a newbie you can try to make such a slider with guide, and see how it behaves.
You are right, I'am getting the same problem, which I can't explain

请先登录,再进行评论。

Try this in this order
set(handles.slider1,'Min',0,'Max',1,'Sliderstep',[0.01,0.02])
set(handles.slider1,'value',0)
%or
set(handles.slider1,'Min',0,'Max',1,'Sliderstep',[0.01,0.02],'value',0)
I'm not able to reproduce. I displayed the value in the movement callback and it was exactly as expected: 0.01 after the first small click, and incrementing by 0.01 or 0.02 depending on where in the slider you clicked.
% --- Executes on slider movement.
function slider1_Callback(hObject, eventdata, handles)
% hObject handle to slider1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
sliderValue = get(hObject,'Value') % Spit value out to command line.
return;
The thumbbar of the slider also does not move when I change the step values. Since the value is 0 it stays slammed up against one side. I'm running R2012b 64 bit on Windows 7.

9 个评论

I A, How did you set the parameters? when I set the parameter manually, using Inspector Uicontrol, it works fine, It works also when I set
set(handles.slider1,'Min',0,'Max',1,'Sliderstep',[0.01,0.02])
set(handles.slider1,'value',0)
But when I switch the order
set(handles.slider1,'value',0)
set(handles.slider1,'Min',0,'Max',1,'Sliderstep',[0.01,0.02])
The problem occurred (I am using Matlab 2011b on Windows 7)
I did it with property inspector in GUIDE. If you do it there, you don't need to also do it in the OpenFcn function, though I don't think it should hurt. If you are doing it somewhere in code, is the slider actually displayed at that point? Or is it still now shown yet and in the process of creating the GUI for initial display? I think I remember in the past where sometimes I couldn't do things if the control wasn't displayed yet.
I know, I'am just trying to find what is causing the problem. Try
set(handles.slider1,'value',0)
set(handles.slider1,'Min',0,'Max',1,'Sliderstep',[0.01,0.02])
that causes the problem
Thank you for your efforts, i am using the inspector in guide to modify the slider properties. see this screenshots please:
with default settings: http://i48.tinypic.com/111hspd.jpg
after changing sliderstep: http://i45.tinypic.com/35250rr.jpg
I tried forcing a 0 value at the start (openfcn), but that had no effect.
Have you tried to do it in this order?
set(handles.slider1,'Min',0,'Max',1,'Sliderstep',[0.01,0.02])
set(handles.slider1,'value',0)
Also, if you did it in the inspector, you don't need it to do it in open function.
of course, i know that
i tried to force 0 value both in the opening and in the creationFcn, doesnot matter
What happens if you set the value to 1 at first?
with value set to 1, it works fine, starts with value 1
So would this be a work aorund?
set(handles.slider1, 'value', 1);
drawnow;
set(handles.slider1, 'value', 0);

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Debugging and Analysis 的更多信息

提问:

2013-1-14

Community Treasure Hunt

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

Start Hunting!

Translated by