我想在一个gui(比如N)中得到一个数字,并在按下“按钮”时在另一个gui图中创建N“edittext”。我写这个代码(这是正常的):
%%%%%%%%%%%%%%%%%%%%%%%%%%%
input_num = str2double(get(handles.edit1,'String'));
edittext = zeros(input_num,1);
panel= uipanel('parent',untitled1,...
'Title','Input Data',...
'position',[.01 .05 .25 .95]);
for i = 1:input_num
edittext(i,1) = uicontrol('parent',panel,'style','edit',...
'string','',...
'position',[20 360-i*25 40 20]);
end
%%%%%%%%%%%%%%%%%%%%%%
然后在第二个gui中,我想获取用户在创建的“edittext”中输入的数据并使用它们来做某事。 我怎么能这样做?
答案 0 :(得分:0)
您可以使用图中的Tag
属性和正在创建的uipanel
来从第二个GUI中的第一个GUI中获取相应的元素。
这是一个注释的例子:
让我们用原始标签'GUI1'创建GUI1。请注意,我们还在uipanel中添加了一个标记...我们使用k
作为循环变量而不是i
。
function MakeEditTextsGUI
hFig1 = figure('Name','Fig1','Tag','GUI1');
input_num = 3;
edittext = zeros(input_num,1);
panel= uipanel('parent',hFig1,'Tag','Panel1',...
'Title','Input Data',...
'position',[.01 .05 .25 .95]);
for k = 1:input_num
edittext(k,1) = uicontrol('parent',panel,'style','edit',...
'string','','position',[20 360-k*25 40 20],'Tag',sprintf('edit_%i',k));
end
end
这是用户输入数据的图。
让我们创建一个带按钮的第二个GUI,用户可以从第一个GUI获取数据,这个数据必须打开:
function GetEditBoxes
hFig2 = figure('Position',[400 400 200 100],'Tag','GUI2');
hButton = uicontrol('Style','push','Position',[60 60 80 20],'String','Get content','Callback',@(s,e) GetContent);
function GetContent
%// Fetch figure 1
hCurrFig = findobj('Tag','GUI1');
%// Make current figure
figure(hCurrFig);
%// Fetch Panel1
hCurrPanel = findobj('Tag','Panel1');
%// Get its children and order from first to last
EditBoxes = flipud(get(hCurrPanel,'Children'));
%// Get number of edit boxes
NumBoxes = numel(EditBoxes);
%// Go and get the data!
for p = 1:NumBoxes
get(EditBoxes(p),'String')
end
end
end
我没有包含任何错误捕获代码,但很容易验证每个编辑框是否包含一个条目。一旦用户按下按钮,每个框的内容将显示在命令窗口中,但您可以轻松地将它们存储到数组或其他内容中。
玩得开心!