【问题标题】:Setting default value on Matlab UI Slider在 Matlab UI Slider 上设置默认值
【发布时间】:2016-05-10 04:08:10
【问题描述】:

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

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

代码:

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

关于如何解决这个问题的任何其他想法?

谢谢,

马丁

【问题讨论】:

  • 顺便说一句,如果您指定图形对象的Position 属性,那么同时指定'Units' 属性是最安全的。默认值在用户和/或 MATLAB 版本之间并不总是一致的。

标签: matlab user-interface slider focus


【解决方案1】:

代替

setfocus(h.slider);

试试

uicontrol( h.slider );

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

顺便说一句:我对 MATLAB 中的 GUI 不太熟悉。但是我加了

global h;
h = struct();

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

【讨论】:

  • Slider_CallBack 在这里实现为nested function。它与父函数共享一个工作区,不需要全局变量。我还建议您查看local functions 的文档,函数无需位于单独的文件中。
  • @excaza 啊谢谢你的澄清,这是有道理的。我暂时注释掉了%function slider_test。
  • 感谢您的帮助!作为记录,这似乎也适用于 Matlab 2011。我刚刚检查过!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-31
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 1970-01-01
  • 2015-02-08
  • 1970-01-01
相关资源
最近更新 更多