我正在创建一个图形界面(手动),我希望有一个重置按钮来重置默认值。
我已经编码了这个
uname -r
答案 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可以避免这种情况。