Is it possible to create "x" amount of objects with pop-up menus in GUI depending on the user input?

조회 수: 2 (최근 30일)
Hello everyone,
I am in the process of designing a Matlab GUI and I was wondering if what I want to do is even possible. If it is, I would appreciate if I can be pointed in the right direction.
The user will input a number in a text box. This number will be the amount of objects that will be created (inside the GUI). Each object will have two different menus with additional options. Am I able to accomplish this using Matlab GUI?
Thank you in advance for any help provided.

채택된 답변

Tom
Tom 2013년 6월 28일
편집: Tom 2013년 6월 29일
You can do it programatically, using the UICONTROL function
function Create_Panels(varargin)
%tile a series of panels, each containing two listboxes
%argument 1: number of panels to create (otherwise default of 6)
if nargin > 0
nPanels = varargin{1};
if ~isnumeric(nPanels) || numel(nPanels) ~= 1 || nPanels < 1
error('please enter an integer greater than 0')
else
nPanels = round(nPanels);
end
else
nPanels = 6;
end
%create figure
figPos = [100 50 1000 600];
F = figure('Position',figPos);
%gaps between panels
horzSpc = 10;
vertSpc = 10;
%arrange tiling of panels
nHorz = ceil(sqrt(nPanels));
nVert = round(nPanels/nHorz);
[gridHorz gridVert] = meshgrid(1:nVert,1:nHorz);
%calculate panel size
panelHeight = round((figPos(4) - vertSpc) / nVert -vertSpc);
panelWidth = round((figPos(3) - horzSpc) / nHorz -horzSpc);
u = zeros(nPanels,1);
for n = 1:nPanels
x = horzSpc + (gridVert(n)-1)*(panelWidth + horzSpc);
y = vertSpc + (gridHorz(n)-1)*(panelHeight + vertSpc);
u(n) = Panel_Gen(x,y,panelHeight,panelWidth);
set(u(n),'Title',sprintf('Panel %d',n))
end
function u = Panel_Gen(x,y,h,w)
u = uipanel('Units','Pixels',...
'Position',[x y w h]);
%listboxes:
uicontrol('Style','popup',...
'Parent',u,...
'Position',[10, 10, ((w-10)/2)-10 h-30],...
'String',{'One', 'Two' ,'Three'})
uicontrol('Style','popup',...
'Parent',u,...
'Position',[((w-10)/2) + 10, 10, ((w-10)/2)-10, h-30],...
'String',{'Uno', 'Dos', 'Tres'})
  댓글 수: 3
Tom
Tom 2013년 6월 29일
Sure, but if it's not directly related to my code then I'd ask it as a new question so more people have the chance to look at it.
David (degtusmc)
David (degtusmc) 2013년 7월 1일
Thank you Tom. I tried your suggestion and it worked. Is there a way to create the panels under the input text box, rather than opening new windows (figures)? The reason, I am asking is because I would like to have more control over the amount of objects created (i.e. adding or removing panels).

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

추가 답변 (2개)

KIRAN kumar
KIRAN kumar 2013년 6월 29일
yeah the above one works try it!!!

Steven
Steven 2013년 7월 8일
great

카테고리

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