我一直在试图编写一个应该接收一个变量作为输入的GUI,并执行几个生成另一个变量的操作。 GUI将有一个关闭GUI的按钮。MATLAB:从编程GUI返回变量
我不是(也不想)使用GUIDE。
下面,我提供了一个GUI的简单工作示例,它只是将一个输入变量添加到输入变量中。 “完成”按钮关闭GUI,但我找不到将变量导出到工作区的方法。
% Is this the correct way to initialize the function for what I am trying to do?
function outputVariable = exampleGUI(inputVariable)
% Initialize main figure
hdl.mainfig = figure();
% Add Button
hdl.addPushButton = uicontrol(hdl.mainfig, 'Units', 'normalized',
'Position', [0.05 0.6 0.3 0.25], 'String',
'Add One', 'Callback', @addOne);
% Done Button
hdl.donePushButton = uicontrol(hdl.mainfig, 'Units', 'normalized',
'Position', [0.65 0.6 0.3 0.25], 'String',
'Done', 'Callback', @done);
% Static text
hdl.sliceNoText = uicontrol(hdl.mainfig, 'Style', 'text',
'Fontsize', 16, 'Units', 'normalized',
'Position', [0.35 0.2 0.3 0.25]);
function addOne(~, ~, ~)
inputVariable = inputVariable + 1; % add one to the current inputVariable
set(hdl.sliceNoText, 'String', num2str(inputVariable)); % change static text
newVariable = inputVariable; % new variable to be exported
end
function done(~, ~, ~)
delete(hdl.mainfig); % close GUI
end
end
我想这样做:
在工作区:增加一个输入变量一定次数后
outputVariable = exampleGUI(inputVariable)
而且,我将推动“完成“按钮和GUI将关闭,工作区将包含inputVariable和outputVariable。
非常感谢。
fnery
非常感谢@jucestain 在一个侧面说明,是变量'outputVariable'和'newVariable'认为** **全局变量?我一直在阅读,避免全局变量是一种很好的做法,但我似乎无法理解我们如何避免使用嵌套函数在程序化GUI中使用它们......对此有何看法? (假设我所指的变量确实是全局变量) – fnery 2013-03-17 21:45:00
不,它们不是全局的。它们的范围仅限于整个功能。这意味着'exampleGUI()'中的任何回调都可以访问它们。一旦函数返回,它们就会被销毁。另外,不要忘记接受答案:) – Justin 2013-03-17 21:51:05
嘿!答案接受:) 再次感谢。 – fnery 2013-03-17 22:21:57