在Matlab UI Slider上设置默认值

时间:2016-02-01 16:10:44

标签: matlab user-interface slider focus

我在matlab中创建了一个滑块,其最小值为-5,最大值为5.我希望滑块的初始值设置为0(滑块的中间)和当前的滑块滑块值放在滑块下面的编辑框中。我的问题是我还需要将焦点设置到滑块,以便它可以通过键盘立即操作。我尝试过使用Matlab文件交换中的setfocus函数,但这会导致当gui加载时滑块降低到-5(因为它模拟了UI对象左上角的鼠标点击)。在setfocus函数调用之后尝试重置滑块的值也不起作用。

下面是一些演示此问题的示例代码(注意,您还需要提供来自http://www.mathworks.com/matlabcentral/fileexchange/1898-setfocus的setfocus .m文件)

代码:

function slider_test

% Test script for slider. Need to maximise the figure window in order to
% see the slider. 

h.window = figure;

%% Create UI Elements

h.slider = uicontrol ('Parent', h.window, 'Style', 'slider', 'Min', -5,        'Max', 5, ...
'Value', 0, 'Position', [200, 50, 200, 50], 'SliderStep', [0.1, 0.1]);

h.TIvalue = uicontrol('Parent', h.window, 'Style', 'edit', 'String', 0,  'Position', ...
 [300, 100, 300, 100], 'FontSize', 16);


%  
%% Set callbacks

set(h.slider, 'Callback', @Slider_CallBack);
setfocus(h.slider)


    function Slider_CallBack(hObject, event)
    %Takes slider value and puts it into the editable text box
        SliderValue = get(h.slider,'Value');
        set(h.TIvalue,'String', num2str(SliderValue));
        set(h.slider,'Value', SliderValue);
    end
end

关于如何绕过这个的任何其他想法?

谢谢,

马丁

1 个答案:

答案 0 :(得分:3)

而不是

setfocus(h.slider);

uicontrol( h.slider );

。这适用于MATLAB R2015b。应该使用版本> R13,请参阅MATLAB Central - How do I force my GUI to give focus to a specific UICONTROL?

BTW:我对MATLAB中的GUI不太熟悉。但我补充说

global h;
h = struct();

slider_test.m中,它不会被初始化。