如何在GUI回调之间传递信息

时间:2013-03-16 10:45:31

标签: matlab

我想传递queryname,这是一个字符串,类似于图像的完整路径到另一个文件do_demo_2。

function query_browse_Callback(hObject, eventdata, handles)
[filename, pathname] = ...
uigetfile({'*.jpg';'*.png';'*.tif'},'Select Query Image');
queryname=[pathname filename];

function retrieve_Callback(hObject, eventdata, handles)
do_demo_2;

我应该如何修改这个以及do_demo_2文件中的第一行是什么?

1 个答案:

答案 0 :(得分:1)

为了在GUI中传递数据,最方便的是将数据存储在handles - 结构中。选择版本1或版本2(它们不兼容)。

function query_browse_Callback(hObject, eventdata, handles)
[filename, pathname] = ...
uigetfile({'*.jpg';'*.png';'*.tif'},'Select Query Image');
queryname=[pathname filename];

%# store queryname, version 1
handles.queryname = queryname;
guidata(hObject,handles);
%# store queryname, version 2
setappdata(handles.YOURGUINAME,'queryname',queryname)


function retrieve_Callback(hObject, eventdata, handles)

%# retrieve queryname, version 1
queryname = handles.queryname;
%# retrieve queryname, version 2
queryname = getappdata(handles.YOURGUINAME,'queryname');

确保在GUI的Opening_Fcn中初始化存储的信息:

%# version 1
handles.queryname = '';
guidata(hObject,handles);

%# version 2
setappdata(handles.YOURGUINAME,'queryname','');

这样,您可以检查retrieve_callback queryname是否为空,并告诉用户先浏览文件名。

如果您希望将queryname的内容传递给其他函数,则将其作为输入参数传递:do_demo_2(queryname)。确保该功能接受输入。