Verfasst am: 02.09.2014, 07:31
Titel: GUI - zwei Popup menus
Hi,
Popup menu 1 definiert eine Anzahl von Ländern und Popup menu 2 definiert einige Variablen, wobei jede Variable für jedes Land grafisch dargestellt werden soll.
Beispiel: Land='US','Japan' (Popup menu 1), Variable='GDP','Trade Balance' (Popup menu 2)
Bei obigem Beispiel würde ich gern mit Hilfe eines Push buttons vier separate Plots erstellen: US/GDP, US/Trade Balance, Japan/GDP, Japan/Trade Balance
Die vier Datenreihen sind in einer matrix gespeichert. Ich bekomme es bisher leider nicht hin, den Inhalt zweier Popup menus zu verbinden. Für hilfreiche Hinweise wäre ich sehr dankbar!!!
% Change units to normalized so components resize automatically. set([hplot,gtext,htext,hpopup,gpopup],'Units','normalized');
% Generate the data to plot.
vars=evalin('base','vars')% matrix with dimesnion 4x100 % Assign the GUI a name to appear in the window title. set(f,'Name','Simple GUI') % Move the GUI to the center of the screen.
movegui(f,'center') % Make the GUI visible. set(f,'Visible','on');
function popup_menu1_Callback(hObject,source,eventdata) global data
% Determine the selected data set.
str = get(hObject, 'String');
val = get(hObject, 'Value');
% Set current data to the selected data set. switch str{val};
case 'US'
data = vars(1:2,:) case 'Japan'
data = vars(3:4,:) end end
function popup_menu2_Callback(hObject,source,eventdata) global data
% Determine the selected data set.
str = get(hObject, 'String');
val = get(hObject, 'Value');
% Set current data to the selected data set. switch str{val};
case 'GDP'
data = data(1,:) case 'Trade Balance'
data = data(2,:) end end
Wenn ich es richtig verstehe, wählst du im ersten Popupmenu zunächst das Land und entnimmst je nach dem welches Land gewählt wurde zwei Zeilen aus vars und schreibst sie in Data.
Im zweiten Popupmenu wird dann entweder die erste oder die zweite Zeile aus Data gewählt und das ganze dann beim Drücken des Pushbuttons geplottet.
Das ganze wäre dann abhängig von der Reihenfolge in der die Popupmenus ausgewählt werden.
Du könntest stattdessen die gesammte Auswertung in der Funktion des Pushbuttons machen.
Noch ein Frage hinsichtlich des oben genannten Beispiels.
Wenn ich das gleiche GUI fuer eine Vielzahl von Laendern und Variablen aufsetzen wollte, muesste ich dann jeden einzelnen 'case' manuell eingeben (was sehr zeitaufwendig waere) oder gibt es eine effizientere Loesung (z.B. loop)?
Wenn ich richtig informiert bin, kann 'case' leider nicht in einen loop eingebunden werden. Daher frage ich mich, was eine effiziente Alternative sein koennte.
Diese Loesung ist ja noch deutlich eleganter als eine Schleife.
Exzellent, danke!
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.