如何使用MATLAB上的GUIDE在弹出菜单上使用相同的列表?

时间:2014-09-11 10:11:43

标签: matlab matlab-guide popupmenu

在MATLAB中,我正在从excel文件中导出一个名单列表' list.xls'进入一个变量' Columns',这样这个列表就会显示在弹出式菜单中。弹出菜单' popUp1'和' popUp2'带把手。问题是列表只显示在popUp1中,我收到popUp2的错误。我的代码如下:

function popUp1_CreateFcn(hObject, eventdata, handles)
 handles = guidata(hObject);
 [~,Columns]=xlsread('list.xls'); %get the list
 set(hObject,'String',Columns); %set(display) list on popUp1 menu
 handles.columns=Columns;
 handles=guidata(hObject);
 guidata(hObject,handles);

 if ispc && Isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
 end


function popUp2_CreateFcn(hObject, eventdata, handles)
 Columns=get(handles.columns,'String'); %gets the list from handles
 set(hObject,'String',Columns); %set(display) the list on popUp2 menu

 if ispc && isequal(get(hObject,'BackgroundColor'), set(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
 end

当我使用' Columns = get(handles.columns,' String');'在Callback函数中,错误不会显示,但仍然是popUp2为空。

老实说,我对整个'处理器非常困惑。事情,所以对他们如何工作的任何解释都将受到高度赞赏。

感谢您的建议!

1 个答案:

答案 0 :(得分:0)

我现在无法测试它,但我认为你应该删除popU1_CreateFcn中handles=guidata(hObject);的两个实例。这部分代码加载与hObject关联的handle变量。在第一行中没有必要,因为句柄已经是函数的参数。在第二个实例中,它实际上是有害的,因为它否定了行handles.columns=Columns,因为句柄被重置为调用popU1_CreateFcn之前的状态。

仔细查看文档http://www.mathworks.de/de/help/matlab/ref/guidata.html

To change the data managed by guidata:
1) Get a copy of the data with the command  data = guidata(object_handle).
2) Make the desired changes to data.
3) Save the changed version of data with the command  guidata(object_handle,data).