Hallo, ich habe in MATLAB ohne GUIDE eine figure mit Labels und Pop-Up-Menus erstellt. Das oberste der 3 Popups ist immer sichtbar, das mittlere habe ich 2 mal geklont. Je nach Eingabe im obersten wird ein Popup der 3 Klone nur sichtbar. Wenn ich das Programm starte, ändert sich die sichtbarkeit der Popups aber nur wenn ich im obersten Menü z.B. erst den 2. dann den 3. Eintrag wähle. Klicke ich danach wieder auf den 1. Eintrag ändert sich nix. Wisst ihr Rat?
function popup_menu_Callback(GuiHandle, eventdata) % Determine the selected data set.
idx = get(f{2}, 'Value'); % Liefert Index des aktiven Elements
str = get(f{2}, 'String'); % Liefert alle gespeichern Strings
choice = str{idx}; % Liefert aktiven Eintrag % Set current data to the selected data set. switch choice
case '3' % User selects Peaks. set(f{5},'visible','off');
set(f{4},'visible','on');
case '5' % User selects Membrane. set(f{4},'visible','off');
set(f{5},'visible','on');
case '7' % User selects Sinc. set(f{5},'visible','off');
set(f{6},'visible','on');
end end
wenn du das so programmieren möchtest, musst du sicherstellen, dass jeweils die beiden anderen Popups unsichtbar sind:
Code:
switch choice
case '3' % User selects Peaks. set(f{6},'visible','off') set(f{5},'visible','off');
set(f{4},'visible','on');
case '5' % User selects Membrane. set(f{4},'visible','off');
set(f{6},'visible','off');
set(f{5},'visible','on');
case '7' % User selects Sinc. set(f{4},'visible','off');
set(f{5},'visible','off');
set(f{6},'visible','on');
end
function popup_menu_Callback(GuiHandle, eventdata) % Determine the selected data set.
idx = get(f{2}, 'Value'); % Liefert Index des aktiven Elements
str = get(f{2}, 'String'); % Liefert alle gespeichern Strings
choice = str{idx}; % Liefert aktiven Eintrag % Set current data to the selected data set. switch choice
case '3'
set(f{6},'visible','off');
set(f{5},'visible','off');
set(f{4},'visible','on');
case '5'
set(f{4},'visible','off');
set(f{5},'visible','on');
set(f{6},'visible','off');
case '7'
set(f{4},'visible','off');
set(f{5},'visible','off');
set(f{6},'visible','on');
end end
Hey Chris,
naja das klappt nicht weil du mit verschiedenen workspaces arbeitest. Zudem bekommst du von einem Callback nicht ohne weiteres einen Parameter zurückübergeben. Bei Callbacks arbeitet man ja ehr mit guidata oder setappdata/getappdata um die Variablen in unterschiedlichen Workspaces (Callbacks) nutzen zu können. Zudem würde ich das auch nicht mit einer while Schleife realisieren sondern ehr mit einem Timer. Des weiteren ist bei einem Callback die erste übergebene Variable immer das Handle vom ausgelösten Objekt und nicht wie bei dir irreführend als GuiHandle bezeichneten figure handle. What ever ich würde es wie folgt machen:
Code:
% Aufrufen aus Hauptprogramm
uiwait(HDR_Gui);
% Gui File function GuiHandle = HDR_Gui
t = timer('TimerFcn',@mycallback, 'Period', 5,'ExecutionMode','fixedRate');
start(t)
function popup_menu_Callback(hObj, eventdata) % Determine the selected data set.
idx = get(f{2}, 'Value'); % Liefert Index des aktiven Elements
str = get(f{2}, 'String'); % Liefert alle gespeichern Strings
choice = str{idx}; % Liefert aktiven Eintrag % Set current data to the selected data set. switch choice
case '3'
set(f{6},'visible','off');
set(f{5},'visible','off');
set(f{4},'visible','on');
case '5'
set(f{4},'visible','off');
set(f{5},'visible','on');
set(f{6},'visible','off');
case '7'
set(f{4},'visible','off');
set(f{5},'visible','off');
set(f{6},'visible','on');
end end
Falls du Variablen von der GUI in dein Hauptprogramm übergeben willst könntest du mit setappdata/getappdata arbeiten...
Greetings
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.