将句柄从一个m文件传递到另一个m文件

时间:2012-06-08 14:59:20

标签: matlab user-interface handles

从我的“主”窗口我有一个按钮,打开另一个窗口“列表”。在列表窗口中,我有两个列表框,左边的列表上有名称,右边的​​列表框中有名称。但是,单击“列表”窗口中的“确定”按钮后,我无法将添加的名称传递到“主”窗口。

function Done_Button_Callback(hObject, eventdata, handles)

    SelectedFaults = get(handles.SelectedFaults_Listbox,'String');  
    set(Main, handle.Faults_Listbox,'String',SelectedFaults)   
    close(Insert_Fault)

我得到的错误是:

 ??? No appropriate method, property, or field Faults_Listbox for class handle.

Error in ==> Insert_Fault>Done_Button_Callback at 380

set(Main, handle.Faults_Listbox,'String',SelectedFaults)

Error in ==> gui_mainfcn at 96
    feval(varargin{:});
  Error in ==> Insert_Fault at 42

gui_mainfcn(gui_State, varargin{:});
??? Error while evaluating uicontrol Callback

两个m文件都在同一目录中。我被卡住了。谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

您的代码未显示如何定义变量“handle”。你是说“手柄”吗?在这种情况下,句柄结构是Insert_Fault图形附带的结构,与主图的句柄结构无关。

如果要修改主窗口中的列表框,可以将Faults_Listbox的句柄从Main图传递给Insert_Fault图,例如通过 userdata or appdata

以下代码应该做你想要的。

在Main:

% Callback of a button in main that opens the Insert_Fault figure
function Open_Insert_Fault_Callback(hObject, eventdata, handles)
Insert_Fault('UserData', struct('Mainhandles', handles));
在Insert_Fault中

function Done_Button_Callback(hObject, eventdata, handles)
SelectedFaults = get(handles.SelectedFaults_Listbox,'String');  

userdata=get(handles.figure1, 'UserData');
Mainhandles=userdata.mainhandles;

set(Mainhandles.Faults_Listbox,'String',SelectedFaults)   
close(Insert_Fault)