How to get data from a variable number of Edit Text box in Matlab GUI ?

조회 수: 10 (최근 30일)
MDC
MDC 2018년 5월 22일
답변: Ahmed Anas 2019년 8월 3일
Hello everyone,
I am creating a GUI where a variable number of edit box is created based on the number entered from the user. Then I need to get the data written in each edit box. To do that I created a cycle for where N edit text boxes are generated using uicontrol.
for K=1:N
edit(K) = uicontrol('Style', 'edit', 'String', '', 'Units', 'Pixels', 'Position', [175 ypos 110 30],'callback',@thickness);
end
The problem is that I cannot get the values from each box because it gives me only the value written in the last box.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
function []=thickness(hObject, eventdata, handles)
val=get(hObject,'string')
setappdata(0, 'value',val);
Do you have any suggestion how to save the data from all the boxes for example in a array? Thank you in advance

채택된 답변

Stephen23
Stephen23 2018년 5월 22일
편집: Stephen23 2018년 5월 22일
You will need to pass the array of handles edit to the callback/function where you want to access them all, and either:
  • loop over the handles just like when creating the edit boxes, or
  • simply get all values at once: get(edit,'String')
What you are doing now will only access one edit box, because when the callback thickness is called the input hObject only contains the handle for that one edit box that triggered the callback, not for all of the handles. Thus you need to pass all the handles yourself if you want to access them all at once.
  댓글 수: 5
Stephen23
Stephen23 2018년 5월 23일
편집: Stephen23 2018년 5월 23일
@MDC: you forgot to pass the handles to the callback where you want to use them, just like I told you to do in my answer. Have a look at the callback thickness: where is edit defined? Answer: nowhere, thus the error. You will need to pass edit, e.g. using the handles structure:
for k = ...
handles.edit(k) = ...
end
guidata(hObject,handles)
and in the callback where you want to use edit:
get(handles.edit,'String')
If you do not pass edit to the other callbacks, then it is not available in those other callbacks. You have to explicitly pass it in the code, because variables do not just magically jump from one callback to another (or from one workspace to another) (and nor should they).
MDC
MDC 2018년 5월 23일
You are completely right! Now everything works good! Thank you so much!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Ahmed Anas
Ahmed Anas 2019년 8월 3일
Kindly send me the complete code for this, cant understand it well and have following error.
Error using My>thickness (line 135)
Not enough input arguments.
Error while evaluating UIControl Callback
Error using My>thickness (line 135)
Not enough input arguments.
Error while evaluating UIControl Callback

카테고리

Help CenterFile Exchange에서 Migrate GUIDE Apps에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by