我有2个弹出菜单(在GUI中)。第一个用户可以选择操作,第二个用户应该能够选择在选定操作期间保存的文件的名称。
换句话说,我必须在第二个弹出菜单中定义两个选项:
标准(表示文件将以程序中定义的默认名称保存)
...(用户可以输入新名称)
有可能吗?
答案 0 :(得分:1)
我构建了一个简单的GUI,其中只包含两个popupmenu
标签:popupmenu1
和popupmenu2
。
popupmenu1
只包含一些字符串,只是为了测试代码。
popupmenu2
包含两个字符串:Save to default file
和Select a new file
要解决您的问题,您可以在第二个弹出菜单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
希望这有帮助。