Menu Gui - how to have the menu box always displayed

3 ビュー (過去 30 日間)
Chris
Chris 2012 年 3 月 29 日
I have the following function:
function menu_plot_results(Data,Index)
option = menu('plot data',...
'Exit',...
'Close All',...
'aaaa',...
'bbbb',...
'cccc');
switch option
case 1 %Exit
case 2 %Close All
case 3 %aaaa
case 4 %bbbb
case 5 %cccc
end
cases 3-5 create plots of data. Once the figures are created, I would like the menu to re-appear, so that additional plots can be created.
Thanks
Chris

採用された回答

Matt Tearle
Matt Tearle 2012 年 3 月 29 日
Unfortunately [voice = Morbo] menu does not work that way [/voice]. There are two alternatives I can think of: 1) use menu within a function called from a wrapper/control function, or 2) write an actual gui yourself. If you take route 2, you associate callbacks with each button; callback 1 will actually delete the menu window (all the others will leave there). Option 1 is less pretty, but also less work:
function menu_plot_results(Data,Index)
doagain = true;
while doagain
option = makemenu(Data,Index);
if option ==1
doagain = false;
end
end
function option = makemenu(Data,Index)
option = menu('plot data',...
'Exit',...
'Close All',...
'aaaa',...
'bbbb',...
'cccc');
switch option
case 1 %Exit
case 2
close all
case 3
figure
plot(Data)
case 4
disp(Index)
case 5
disp('Hello world')
end
  2 件のコメント
Sean de Wolski
Sean de Wolski 2012 年 3 月 29 日
My vote also goes for Route 2!
Guaranteed to be faster, easier, and less chaotic than Route 9.
Matt Tearle
Matt Tearle 2012 年 3 月 29 日
Yeah, but so is a world war.
(Explanation for everyone else: Route 9 -> Boston-area humor...)

サインインしてコメントする。

その他の回答 (2 件)

Sean de Wolski
Sean de Wolski 2012 年 3 月 29 日
I'm not clear on this:
You have a menu, you have it generate a figure, but then it closes and you want it to stay open?
After the plot, just have it call itself again.
function mpr(Data,Index)
option = menu('plot data',...
'Exit',...
'Close All',...
'aaaa',...
'bbbb',...
'cccc');
switch option
case 1 %Exit
case 2 %Close All
close all
case 3 %aaaa
figure;
peaks;
mpr;
case 4 %bbbb
figure;
image;
mpr;
case 5 %cccc
figure;
membrane;
mpr;
end
Or, and this is the route I would take, don't use menu() just hard code your own GUI with a few UICONTROLS and then it doesn't have to close.
  1 件のコメント
Matt Tearle
Matt Tearle 2012 年 3 月 29 日
I wondered about this... This is probably fine, but I don't like the recursiveness -- if you make 15 plots, you're actually 15 function calls deep, until you finally exit and they all collapse back out.

サインインしてコメントする。


Chris
Chris 2012 年 3 月 30 日
Thankyou for the replies. I used Matt's solution, worked very well.

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by