根据输入参数创建GUI

时间:2017-06-21 11:46:51

标签: matlab user-interface

是否可以根据其输入参数创建GUI? 例如,我想用my_gui(n)调用一个GUI,并且GUI出现时带有'push按钮'的n ui-controls,一个在另一个下面,每个按钮都有一个单独的回调。而n可以是1到20的任何名词。 这是否有可能使用eval? 或者有人知道如何做到这一点吗?

感谢您的努力

圣拉斐尔

1 个答案:

答案 0 :(得分:1)

当然可能,例如:

function myGui(n)
   if nargin == 0; n = randi(20); end
   if n > 20 || n < 1
     error ( 'myGui:n', 'The input parameter "n" (%i) is outwith the allowed range (0 to 20)', n );
   end
   % create the parent figure
   hFig = figure;
   % create the positions
   locations = linspace ( 0.9, 0.1, n );
   % loop for n to create them, in this example the callback displays the number of the button pushed.
   % The buttons have a fixed height of 0.05 (normalized).
   for ii=1:n
     uicontrol ( 'parent', hFig, 'style', 'push', 'Units', 'normalized', 'Position', [0.1 locations(ii) 0.5 0.05], 'String', num2str(ii), 'Callback', @(a,b)fprintf ( 'Pushed %i\n', ii ) );
   end
 end