如何在Gui的弹出菜单中添加新变量?

时间:2015-08-11 14:51:19

标签: matlab user-interface popupmenu

我有2个弹出菜单(在GUI中)。第一个用户可以选择操作,第二个用户应该能够选择在选定操作期间保存的文件的名称。

换句话说,我必须在第二个弹出菜单中定义两个选项:

  1. 标准(表示文件将以程序中定义的默认名称保存)

  2. ...(用户可以输入新名称)

  3. 有可能吗?

1 个答案:

答案 0 :(得分:1)

我构建了一个简单的GUI,其中只包含两个popupmenu标签:popupmenu1popupmenu2

popupmenu1只包含一些字符串,只是为了测试代码。

popupmenu2包含两个字符串:Save to default fileSelect a new file

enter image description here

要解决您的问题,您可以在第二个弹出菜单callback中添加以下代码行。

建议的解决方案以这种方式运作:

如果用户选择第一个选项,输出将保存在默认输出文件中。 请注意,您应该添加代码以将输出实际保存在默认输出文件

如果用户选择第二个选项,uiputfile GUI要求用户定义/选择输出文件。 一些检查已经插入文件选择。 同样在这种情况下,您应该添加代码以将输出实际保存在默认输出文件

% --- Executes on selection change in popupmenu2.
function popupmenu2_Callback(hObject, eventdata, handles)
% hObject    handle to popupmenu2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu2 contents as cell array
%        contents{get(hObject,'Value')} returns selected item from popupmenu2

% Identify the first popupm menu selected option
% not strictly necessary, just used to generare the messsage box text
sel_op=get(handles.popupmenu1,'value');
% Idetify the selected option in the second popupmenu
opt=get(hObject,'value')
% Test the second popup menu selection:
%    if opt == 1: the default output file has been selected
if(opt == 1)
   %
   % Insert here the code to save the output in the default output file
   %
   msgbox(['Results of Operation #' num2str(sel_op) ' will be saved in the default output file'], ...
           'Output file selection')
else
% if the second optino has been selected, the user is prompt to select the
% output file
   [filename, pathname] = uiputfile( ...
      {'*.m';'*.mdl';'*.mat';'*.*'}, ...
      'Save as');
% Check for the file selection
   if(filename == 0)
      msgbox('Output file selction aborted','Output file selection')
   else
      %
      % Insert here the code to save the output in the user-defined 
      % output file
      %
      output_file_name=fullfile(pathname,filename)
      msgbox(['Results of Operation #' num2str(sel_op) 'will be saved in ' output_file_name], ...
         'Output file selection')
   end
end

希望这有帮助。