ich hoffe es kann mir jemand helfen. Ich habe ein GUI erstellt und möchte nun mehrere handles an checkbox_callback functions übergeben.
Das problem ist, dass nur das letzte handle übergeben wird und die restlichen scheinbar gelöscht sind.
Code:
function button_callback()
handles.a=plot()
handles.b=plot() set(handles.a,'visible',off) set(handles.b,'visible',off)
Die Übergabe funktioniert bei checkbox1 gut, aber handles.a wird in dem Fall scheinbar gelöscht bzw. wird nicht erkannt. Ich weiß absolut nicht was ich dort falsch mache das nur das eine handle erkannt wird. Ich hoffe ihr könnt mir helfen.
eine Frage: Du übergibst nirgends die handles Struktur. Ist Dein GUI mit nested functions programmiert oder hast Du die Variablenübergabe der Einfachheithalber weggelassen. In letzterem Fall:
wenn immer an handles was geändert wird (nicht über set, sondern mit handles.xyz = ...), muss am Ende die handles-Struktur gespeichert werden! Also muss am Ende von button_callback ein
Wie gesagt ein handle erscheint ja auch richtig wenn ich aber mehrere habe wird nur der letzte verwendet und der rest ist wie gelöscht.
Gast
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 29.10.2009, 17:09
Titel:
Mir ist noch aufgefallen, dass die handles scheinbar beite Übergeben werden aber nur der zweite (hier:b)
ausgeführt wird, bei checkbox1 tritt der Fehler "Invalid handle object" auf
in dem Fall bei Ausführung von Checkbox_Callback2 nicht
Code:
function Startbutton_Callback(hObject, eventdata, handles)
handles.a=...;
handles.b=...;
guidata(hObject, handles);
function checkbox1_Callback(hObject, eventdata, handles)
ifget(handles.checkbox,'value') set(handles.a,'visible','on') %hier tritt Fehler auf
else set(handles.a,'visible','off') end
function checkbox2_Callback(hObject, eventdata, handles)
ifget(handles.checkbox,'value') set(handles.b,'visible','on') else set(handles.b,'visible','off') end
Kann mir jemand helfen? Die Wertübergabe klappt, einzigiges Problem ist das ich nur den letzten Plot-handle sichtbar machen kann und den anderen nicht.
Oliver
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 17.11.2009, 20:22
Titel:
Habe das selbe problem und krieg es auch nicht gebacken, hat wirklich niemand ne idee, wie das funzen könnte?
die Fehlermeldung "Invalid handle object" hört sich danach an, als ob das Objekt (z.B. der Line-Plot) inzwischen nicht mehr exisitert (z.B. weil das Fenster geschlossen wurde).
@Oliver: was genau willst Du machen? Wie sieht der Code aus und was klappt nicht?
Viele Grüße,
LittleX
Oliver
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.11.2009, 11:23
Titel:
mein code sieht genau so aus wie der von gast: ich erstelle zwei plots, welche auf unsichtbar geschaltet werden und je nach dem welchen plot man sehen will, klickt man die checkbox an. mein code sieht exakt wie der 2 beiträge weiter oben. es sollen später noch mehr plots dazukommen und man soll sie sich entweder einzeln anzeigen lassen oder mehrere gleichzeitig in einem axes.
bin für jde hilfe dankbar.
dann wird standardmäßig plot a durch plot b ersetzt und damit existiert handles.a zwar noch, ist aber kein handle auf ein gültiges Objekt mehr.
Und damit kriegst Du die angegeben Fehlermeldung beim Verwenden.
Wenn Du auf unterschiedlichen Achsen plottest oder z.B. hold on verwendest, passiert das nicht.
Viele Grüße,
LittleX
Oliver
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.11.2009, 16:12
Titel:
Nice, hold on war das stichwort
sonst hab ich immer mit hold on gearbeitet, aber ich dachte ich brauche es nur wenn ich direkt plotte.
klappt alles super!
Danke für die schnelle Antwort!
Oliver
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.11.2009, 19:36
Titel:
beantwortet!
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.