您好我有一个关于如何解决此问题的快速问题。基本上我想从两个编辑文本框中获取输入,并将它们指定为滑块范围的最小值和最大值。我没有遇到问题,但是一旦输入min,滑块就会消失,因为min现在高于默认滑块值,即0.我明白错误是因为该值不再出现最小值和最大值的范围,我想通过在最小/最大输入文本框的回调函数中将值更新为高于min来解决此问题。有没有办法可以将默认值更新为min以上,这样我就可以通过这个错误并实际使用滑块了?
警告:'滑块'控制不能具有“价值”。除了' Min' Max'范围 在所有参数值都有效之前,不会呈现控件
以下是我在回调编辑框时尝试做的事情,该编辑框获取滑块最小值的用户输入:
function input_min_Callback(hObject, eventdata, handles)
value_min=str2double(get(hObject, 'String'));
if value_min > sliderValue_default
set(handles.Input_Transverse_Shear_Layer1, 'Value', value_min+1);
set(handles.Input_Transverse_Shear_Layer1, 'Min', value_min);
end
非常感谢任何帮助!
由于
答案 0 :(得分:1)
您的代码对我来说很好。你最近似乎错过了一个guidata(hObject,handles)
来更新guidata,所以这可能是问题(除非它在那里,但你没有将它包含在上面的代码片段中)。
在任何情况下,这里有一些看起来非常像你的代码并且工作正常。尝试一下,这样你就可以看到你的错误......
function UpdateSliderMin(~)
clc
clear
close all
%// Create GUI elements and set default slide value
hFig = figure('Position',[200 200 200 300]);
sliderValue_default = 0;
handles.Slider = uicontrol('style', 'Slider', 'Min', -5, 'Max', 10, 'Value',sliderValue_default, 'Units','normalized','position', [0.08 0.3 0.08 0.6], 'callback', @(s,e) SliderCbk);
handles.Text_min = uicontrol('Style','text','String','Min','position', [60 230 40 20]);
handles.Edit_min = uicontrol('Style','edit','String',num2str(get(handles.Slider,'min')),'position', [100 230 40 20],'Callback',@(s,e) MinCallback);
handles.Text_max = uicontrol('Style','text','String','Max','position', [60 180 40 20]);
handles.Edit_max = uicontrol('Style','edit','String',num2str(get(handles.Slider,'max')),'position', [100 180 40 20]);
handles.Text_val = uicontrol('Style','text','String','value','position', [60 130 40 20]);
handles.Edit_val = uicontrol('Style','edit','String',num2str(get(handles.Slider,'value')),'position', [100 130 40 20]);
guidata(hFig,handles)
%// Callback of the edit box for the min value
function MinCallback
value_min=str2double(get(handles.Edit_min, 'String'));
if value_min > sliderValue_default
set(handles.Slider, 'Value', value_min+1);
set(handles.Slider, 'Min', value_min);
set(handles.Edit_val,'String',get(handles.Slider, 'Value'));
end
guidata(hFig,handles)
end
%// Slider callback. Just to check the value is updated correctly
function SliderCbk
CurrentValue = get(handles.Slider,'Value');
set(handles.Edit_val,'String',num2str(CurrentValue));
guidata(hFig,handles)
end
end
初始GUI的屏幕截图:
将最小值设置为5后,它高于滑块的当前值:
当前值按预期更新为6.
希望有所帮助!