У меня есть два графических интерфейса с ярлыками mainWindow и annotatorWindow. Я хочу передать данные между двумя окнами. Когда я копирую данные из mainWindow в annotatorWindow (см. copyData_Callback
), он работает отлично. Но когда я хочу записать данные обратно в mainWindow (см. saveData_Callback
), я получаю сообщение об ошибке «Матричные индексы должны быть полными двойными». Я не совсем уверен, что это означает, любая помощь приветствуется. Ниже приведен код интереса.MATLAB: Передача данных между двумя графическими интерфейсами
CALLBACKS UNDER annotatorWindow
% --- Executes on button press in copyData.
function copyData_Callback(hObject, eventdata, handles)
% hObject handle to copyData (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
h = findobj('Tag', 'mainWindow');
if ~isempty(h)
pData = guidata(h)
handles.UserData = pData.UserData
end
guidata(hObject, handles);
return
% --- Executes on button press in saveData.
function saveData_Callback(hObject, eventdata, handles)
% hObject handle to saveData (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
h = findobj('Tag', 'mainWindow');
if ~isempty(h)
guidata(h).UserData = handles.UserData
end
guidata(hObject, handles);
return
Просьба (и читать) сообщение об ошибке целиком, это довольно ясно. Проблема не имеет ничего общего с передачей данных между графическими интерфейсами. Ваш вызов 'guidata' в' saveData' недопустим. Вы получаете ошибку, потому что MATLAB считает, что вы пытаетесь индексировать 'guidata' с помощью' h', который является объектом, а не целым числом, а 'guidata' - это функция, а не переменная. – excaza