WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Daten innerhalb eines Callbacks in ein Objekt speichern

 

bene_

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.03.2019, 08:58     Titel: Daten innerhalb eines Callbacks in ein Objekt speichern
  Antworten mit Zitat      
Hallo zusammen,

folgendes möchte ich bewerkstelligen: eine GUI, mit der ich nach klick auf einen Button Daten lade, die dann innerhalb der GUI gespeichert werden und weiterverarbeit werden können (z.B. plotten). Dazu habe ich versucht mich an einem Beispiel von https://wiki.octave.org/Uicontrols zu orientieren. Leider bekomme ich die Daten nicht wie gewünscht gespeichert.

Folgendes Minimalbeispiel habe ich:
Code:
clear h
graphics_toolkit qt

function h = init_gui(h)
  h.ax = axes('Box','on','NextPlot','add');
  h.button_load_mes = uicontrol('style', 'pushbutton','string', 'load_mes',...
    'callback', @load_mes,'position', [10 10 80 20]);
end

function load_mes(obj)
  h = guidata(obj)
  [filename, filepath] = uigetfile()
  h.plot = plot([1e3 1e4],[-5 10]);
  h.dat(1).x = [1e3 1e4];
  h.dat(1).y = [-5 10]
  guidata(obj,h)
end

f = figure(5);clf;

h = struct();
h = init_gui(h);
h.data = cell(0);
guidata(f, h);


nach meinem Verständnis sollte wird erst die Achse und der Button erstellt. Wenn ich auf den Button klicke, gehe ich in die Funktion load_mes, in der ich beliebige Berechnungen durchführen kann. Ich möchte im Beispiel dann daten in h.dat speichern, die danach auch in meinem workspace gespeichert sein sollten. In Zeile 15 habe ich h nicht abgeschlossen, dass man sieht, dass die Daten auch in h gespeichert werden. Wenn ich im Workspace nach aufruf des Callbacks aber mir h nochmal anschaue ist h.dat wieder leer.

Was mache ich dabei falsch?


andyydna

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.04.2019, 07:52     Titel:
  Antworten mit Zitat      
ist die Frage noch aktuell?
 
bene_

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.04.2019, 12:30     Titel:
  Antworten mit Zitat      
Ja, die Frage ist immer noch aktuell. Ich habe es noch nicht hinbekommen.
 
bene_

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.04.2019, 12:38     Titel:
  Antworten mit Zitat      
Noch eine Anmerkung dazu:

wenn ich innerhalb der Callback-Funktion mit Hilfe von "set" bspw die Eigenschaft XLim der Achse ändere, dann wird dies ausgeführt und auch gespeichert. Das heißt nach dem Callback ist der Wert dann auch in h präsent. Allerdings kann ich über "set" nur Eigenschaften der Grafikobjekte bearbeiten. Auf meine eigenen Daten kann ich damit leider nicht zugreifen.
 
andyydna

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.04.2019, 15:03     Titel:
  Antworten mit Zitat      
Du kannst dir den Sourceocde von m/gui/guidata.m anschauen. DATA wird einfach der property __guidata__ eines figure handles hinzugefügt bzw. davon gelesen, sont gibt es nicht viel Magie dabei.

wenn du also auf deine Daten, die du im callback nach __guidata__ geschrieben hast, außerhalb lesen willst, musst du wieder über guidata über das handle lesen.

HTH, Gruß Andy
 
bene_

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.04.2019, 15:46     Titel:
  Antworten mit Zitat      
Das hat mir schon mal geholfen. Ich habe es zwar noch nicht ganz begriffen, wie es genau funktioniert, aber ich komme jetzt weiter.
 
andyydna

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.04.2019, 19:34     Titel:
  Antworten mit Zitat      
es gibt auf freenode über IRC den channel #octave wo man sowas auch "live" besprechen kann
(es gibt AFAIK sogar nen webclient)
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.