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

eingabe in gui figur in ein variable speichern

 

Tiago
Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 24.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.10.2016, 14:30     Titel: eingabe in gui figur in ein variable speichern
  Antworten mit Zitat      
Hallo Leute,

ich habe ein gui gebaut mit Name und Vorname wenn ich die Name und Vorname in gui eintippe und auf ok DRUCKE, die werden nicht gespeichert

kann jemand bitte mir helfen
Code:

f = figure;
set(f,'Position',[800 150 800 750],'Color',[.4 .6 1],'MenuBar','none',...
    'Name','IAV-SENT-Box Test Eingabedaten','Visible','off');

% im=imread('*.tif');
% axes('Position',[0.75 0.75 0.23 0.35]);
% imshow(im)

bc = [.4 .6 .8];
ba = [.4 .6 1];

ht = uicontrol('Style','text','Position',[60 695 160 40],...
    'String','Vorname:','FontSize',10,'FontWeight','bold',...
    'BackgroundColor',ba,'ForegroundColor','w');
set(ht,'userdata',rand(3))
get(ht,'userdata')
ht1 = uicontrol('Style','text','Position',[70 645 160 40],...
    'String','Name:','FontSize',10,'FontWeight','bold',...
    'BackgroundColor',ba,'ForegroundColor','w');

ich habe
he = uicontrol('style','edit','Position', [200 710 120 30],...
    'BackgroundColor',bc,'FontSize',10,'FontWeight','bold',...
    'ForegroundColor','w');
he1 = uicontrol('style','edit','Position', [200 660 120 30],...
    'BackgroundColor',bc,'FontSize',10,'FontWeight','bold',...
    'ForegroundColor','w');

hp = uicontrol('Style', 'pushbutton', 'String', 'Ok',...
    'Position', [250 420 60 30],...
    'Callback', 'close');
 movegui(f,'center')
 set(f,'Visible','on')
 set(f, 'UserData',ht)
 


ich hoffe dass mir jemand hier helfen kann


Gruß, Tiago
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.10.2016, 15:29     Titel:
  Antworten mit Zitat      
Hallo,

die einzige Möglichkeit sehe ich darin, die Eingaben programmatisch auf Druck eines Buttons oder in der CloseRequestFcn auszulesen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Tiago
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 24.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.10.2016, 16:33     Titel:
  Antworten mit Zitat      
danke Harald für die Antwort, ich bin jetzt so gekommen dass der Name oder Vorname die ich eintippe wird in "ans" gespeichert aber ich möchte je eingetippte Name und Vorname in verschiedenen variabel speichern

ich hasse functionen, mit denen hier in matlab nicht klar kommen kann


Code:


function AgeDB = EingabeD()
f = figure;
set(f,'Position',[800 150 800 750],'Color',[.4 .6 1],'MenuBar','none',...
    'Name','IAV-SENT-Box Test Eingabedaten','Visible','off');

bc = [.4 .6 .8];
ba = [.4 .6 1];

ht = uicontrol('Style','text','Position',[60 695 160 40],...
    'String','Vorname:','FontSize',10,'FontWeight','bold',...
    'BackgroundColor',ba,'ForegroundColor','w');
ht1 = uicontrol('Style','text','Position',[70 645 160 40],...
    'String','Name:','FontSize',10,'FontWeight','bold',...
    'BackgroundColor',ba,'ForegroundColor','w');


he = uicontrol('style','edit','Position', [200 710 120 30],...
    'BackgroundColor',bc,'FontSize',10,'FontWeight','bold',...
    'ForegroundColor','w','Callback',{@EingabeD_Callback});
he1 = uicontrol('style','edit','Position', [200 660 120 30],...
    'BackgroundColor',bc,'FontSize',10,'FontWeight','bold',...
    'ForegroundColor','w','Callback',{@EingabeD_Callback});

hp = uicontrol('Style', 'pushbutton', 'String', 'Ok',...
    'Position', [250 420 60 30],...
    'Callback', 'close');
movegui(f,'center')
set(f,'Visible','on')
waitfor(he)

    function EingabeD_Callback(he,eventdata)
     
      AgeDB = mat2str(get(he,'string'));
 
    end
     
 end
 


kannst du mir bitte eine Möglichkeit eines code Beispiel oder was ich noch hier rein schreiben schreiben
oder jemand dr damit gut aus kennt

es wäre nett von euch

Gruß, Tiago
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.10.2016, 17:36     Titel:
  Antworten mit Zitat      
Hallo,

wie gesagt: du musst mit get-Befehlen die Informationen auslesen und dann wie gewünscht abspeichern. Sollen die Informationen in einer Datei gespeichert werden? Sollen sie beim nächsten Öffnen in der GUI eingetragen sein?
Je klarer die Problemstellung, desto klarer die Antwort.

Übrigens dürfte auch eine Suche im Forum bzw. Google helfen. Ähnliche Fragen gab es hier schon das eine oder andere Mal.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Tiago
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 24.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2016, 13:06     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich echt viel gesucht und auf mein Programmcode alle mögliche befehle implementiert
aber ohne Ergebnisse ich bin jetzt 3 tage mit der Sache und ich kriege das Problem nicht.
das Problem ist Simple, ich will einfach die lokale variable aus dem callbackfunction

rausholen und in matlab workspacefenster als irgend ein variable speichern

ich glaube meine frage ist ja klar und deutlich

wie ich gesagt habe, ich bin nur ein matlab bastler in der Zeit so ein profi bin ich nicht


Gruß, Tiago
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 01.11.2016, 13:24     Titel:
  Antworten mit Zitat      
Hallo Tiago,

Zitat:
ich echt viel gesucht und auf mein Programmcode alle mögliche befehle implementiert

Das hilft uns noch nicht beim Antworten: Wenn es "alle möglichen Befehle" waren, müssten ja auch die richtigen darunter gewesen sein. Bitte poste, welche Befehle Du probiert hast und was genau nicht wie gewünscht funktioniert hat.

Zitat:
ich will einfach die lokale variable aus dem callbackfunction
rausholen und in matlab workspacefenster als irgend ein variable speichern

Das "Rausholen" und ferngesteuert in irgendeinem Workspace (es geht ja nicht um das "Fenster" an sich, oder?) einfügen, ist grundsätzlich ein schlechter Programmier-Stil, denn dann kann man kaum noch nachvollziehen, woher ein Wert stammt und das Debuggen wird zum Horror.

Aber es geht:
Code:
function EingabeD_Callback(he,eventdata)
AgeDB = mat2str(get(he,'string'));  % MAT2STR???
  assignin('base', 'AgeDB', AgeDB);
end

Das mat2str sieht hier falsch aus: Du bekommst einen String aus dem UICONTROL, dann muss man nicht eine Matrix in einen String umwandeln. Vielleicht meinst Du:
Code:
AgeDB = sscanf(get(he,'string'), '%f');

um einen String in eine Zahl umzuwandeln.

Grundsätzlich ist aber -wie gesagt- die ferngesteuertze Erzeugung von Variablen richtig schlecht. Besser wäre es die benötigten Operationen gleich im Callback auszuführen oder von dort die Variable als Input für die auszuführende Funktion zur Verfügung zu stellen. Schaue Dir mal professionelle GUIs an, z.B. von einem Office: Die Berechnungen erfolgen dort auch direkt aus den GUIs, wenn man eine Zahl eingibt oder einen Button betätigt.
In den ApplicationData oder UserData der figure wären die Daten also besser aufgehoben als im Base-Workspace.

Gruß, Jan

Zuletzt bearbeitet von Jan S am 02.11.2016, 14:00, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Tiago
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 24.06.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2016, 17:55     Titel:
  Antworten mit Zitat      
Hallo Jan,

das ist mein letzte versuch die ich gemacht habe
wenn ich schreibe "Command Window fenster" wo man die Ergebnisse sehen kann oder "Wokspace-fenster" wo man die Variabel speichern kann. ich meine matlab-Software-Oberfläsche.


Code:


function [] = AgeDB(EventData)

f = figure;
set(f,'Position',[800 150 800 750],'Color',[.4 .6 1],'MenuBar','none',...
    'Name','IAV-SENT-Box Test Eingabedaten','Visible','off');

bc = [.4 .6 .8];
ba = [.4 .6 1];

ht = uicontrol('Style','text','Position',[60 695 160 40],...
    'String','Vorname:','FontSize',10,'FontWeight','bold',...
    'BackgroundColor',ba,'ForegroundColor','w');

 ht1 = uicontrol('Style','text','Position',[70 645 160 40],...
     'String','Name:','FontSize',10,'FontWeight','bold',...
     'BackgroundColor',ba,'ForegroundColor','w');


he = uicontrol('style','edit','Position', [200 710 120 30],...
    'BackgroundColor',bc,'FontSize',10,'FontWeight','bold',...
    'ForegroundColor','w','Callback',{@Eingabe_he_Callback});

he1 = uicontrol('style','edit','Position', [200 660 120 30],...
     'BackgroundColor',bc,'FontSize',10,'FontWeight','bold',...
     'ForegroundColor','w','Callback',{@Eingabe_he1_Callback});

hp = uicontrol('Style', 'pushbutton', 'String', 'Ok',...
    'Position', [250 420 60 30],...
    'Callback', 'close');
movegui(f,'center')
set(f,'Visible','on')

waitfor(he)

function  Eingabe_he_Callback(he,EventData)

 
        Var1 = get(he,'string')
end   %wenn ich hier Breakpoints mache, was ich in Edit eintippe wird in Var1 gespeichert, laut Workspace-fenster
function  Eingabe_he1_Callback(he1,EventData)

        Var2 = get(he1,'String')
end
end
 


wenn ich kein Breakpoint mache wird kein Variabel gepeichert entweder Var1 oder Var2 Bzw. nicht auf Workspace-fenster

und meine Frage wie kann ich die beide Variabel Var1 und Var2 auf Workspace-fenster speichern.
das heisst die eingetippte string in edit (he und he1) möchte ich in Var1 und Var2 speichern
ich hoffe dass die Frage klar geworden ist.
und ich danke dir auf dein Verständnis

Gruß, Tiago
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.11.2016, 09:25     Titel:
  Antworten mit Zitat      
Hallo,

nun ist mir die Frage klar, zuvor war sie es nicht (daher auch die Rückfragen).

Du brauchst deinen Code von 31.10.2016, 15:33 nur richtig aufzurufen, und dann bekommst du die Information in AgeDB
Code:
AgeDB = EingabeD


Bei mehreren Informationen kannst du mehrere Rückgabeargumente verwenden oder alles in eine Struktur packen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.11.2016, 14:13     Titel:
  Antworten mit Zitat      
Hallo Tiago,

Es gibt das CommandWindow und den Workspace-Browser.

Wann sollen die Daten im Command-Window zugänglich sein? Während der Callback läuft oder wenn der Dialog geschlossen wird?
In letzterem Fall brauchst Du keine Callbacks für die EDIT-Felder, sondern für den Button zum Schließen:
Code:
function Data = AgeDB()   % Die EventData haben hier nichts zu suchen
[...] Siehe oben

hp = uicontrol('Style', 'pushbutton', 'String', 'Ok',...
    'Position', [250 420 60 30],...
    'Callback', 'close');
% 'close' als string ist schlecht. Verwende lieber einen function-handle:
   'Callback', @CloseCB);
 
movegui(f,'center')
set(f,'Visible','on')

waitfor(f);  % Nicht (he)
Data.FirstName = get(he, 'String');
Data.Name = get(he1, 'String');
delete(f);
end

function  CloseCB(objectH, EventData)
resume(ancestor(objectH), 'figure');
end


Jetzt rufe das ganze so auf:
Code:
Data = AgeDB

Und die beiden Variablen sind im Struct "Data" gespeichert.

Zitat:
und meine Frage wie kann ich die beide Variabel Var1 und Var2 auf Workspace-fenster speichern.

Und genau das hatte ich Dir bereits mit assignin gezeigt, aber es ist grundsätzlöich eine schlechte Methode.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
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 - 2025 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.