如何重置图形用户界面中的默认值

时间:2017-12-13 09:31:26

标签: matlab interface reset

我正在创建一个图形界面(手动),我希望有一个重置按钮来重置默认值。

我已经编码了这个

uname -r

2 个答案:

答案 0 :(得分:0)

如果您真的想从头开始创建GUI,最简单的方法就是关闭它再次打开它。你可以通过按钮的回调来做到这一点。我指出了一个新函数restartGUI。这可能是你的主要gui或它自己的m文件的子功能,你的选择。

你的问题在细节上非常清楚,所以我无法帮助解决一些细节,但这应该会给你一般的想法。

如果关闭和打开并不是您想要的,那么在restartGUI函数中您只需手动重置每个uicontrol的状态等等(GUI中的任何其他内容都是我们的不能看。)

H.but(3) = uicontrol('Units','normalized', ...
    'BackgroundColor',[1 0.7 1], ...
    'Callback',@restartGUI, ...
    'FontSize',12, ...
    'Position',[0.04 0.54 0.1 0.05 ], ...
    'String','Reset');

% <<<< THE rest of your code >>>

function restartGUI(hObject,varargin)
global H
close(H.fig)  %Assuming H.fig the main GUI window.
%Call the GUI again which will restart it.
yourGUIFunction

编辑:添加使用全局H来关闭。

答案 1 :(得分:0)

我通常更喜欢为我的GUI创建一个特定的reset_gui函数,它将所有相关的控件属性(如复选框状态,可编辑文本框中的字符串等)重置为适当的默认值,以及设置所有相关变量值为默认值,清除图表等。

如果您更喜欢将所有UI控件属性重置为初始状态的通用选项,那么这里有一个可能解决方案的示例:

function example_reset_gui

  % Initialize GUI:
  hFigure = figure();
  uicontrol('Style', 'edit', 'Position', [20 100 100 25]);
  uicontrol('Style', 'edit', 'Position', [20 65 100 25]);
  uicontrol('Style', 'push', 'Position', [20 20 60 30], ...
            'String', 'Reset', 'Callback', @reset_fcn);
  drawnow

  % Collect default states:
  [defaultState{1:3}] = get_default_state(hFigure);

  % Nested reset function:
  function reset_fcn(~, ~)
    set(defaultState{:});
  end

end

% Local function:
function [hArray, propArray, valueArray] = get_default_state(hFigure)
  hArray = findall(hFigure, 'Type', 'uicontrol');
  propArray = fieldnames(set(hArray(1)));
  valueArray = get(hArray, propArray);
end

这会创建一个包含2个可编辑文本框和一个重置按钮的图形。您可以在文本框中键入所需的内容,当您按下重置按钮时,它将清除它们(即将它们设置为它们首先包含的默认空字符串)。

local function get_default_state会在图中找到所有uicontrol个对象,然后获取所有set个属性(即所有未读取的属性)只有),然后get这些属性的所有初始值。这三个输出存储在1×3单元阵列defaultState中,nested function reset_fcn可以访问它。按下重置按钮后,所有set能力的UI控件属性都将设置为首次创建时的值。

应该注意的是,通过这种方法可以撤消对Position property所做的任何更改(例如由于图的大小调整)。使用'normalized' units可以避免这种情况。