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

Ausgabe von Werten aus Edit und Popupmenu

 

Sebastian Kling

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.01.2011, 17:00     Titel: Ausgabe von Werten aus Edit und Popupmenu
  Antworten mit Zitat      
Guten Abend,
ich habe ein Programm in Matlab geschrieben. Man gibt unterschiedliche Parameter ein (Zahlen) und Matlab liest mit diesen aus verschiedenen DIN Tabellen andere Werte raus. Das funktioniert in der Matlabkonsole super.

Ich schildere mal ein vereinfachtes Beispiel:
Es wird nach einer Eissorte gefragt und man muss dann Zahlen eingeben: 1 (Schokolade), 2 (Vanille) oder 3 (Erdbeere).

Dieses will ich in der GUI mittels popupmenu abfragen. Also im Popupmenu sollen die 3 Eissorten zur Auswahl stehen und je nach Eissorte soll dann die Zahl 1, 2 oder 3 einer Variablen zugewiesen werden.

Das vereinfachende Beispiel habe ich mal als Datei angehangen, die mein Problem halbwegs darstellt.

Weiter wird noch z. B. die Anzahl der Kinder abgefragt. Da hier nur eine bestimmte Anzahl möglich ist, soll das auch per popupmenu geschehen. Die Anzahl der Kinder soll dann genauso als Variable ausgegeben werden.

Und als letztes kann man dann auch noch die Anzahl der Eiskugeln per Hand eintragen und dieser Wert soll auch als Variable ausgegeben werden.

Ich hoffe, dass ich mich halbwegs klar ausgedrückt habe! Smile

Ich bin Matlab-Neuling und war schon froh, dass der Code in der Konsole funktioniert. Bei der grafischen Oberfläche haben die einfachsten Tutorials nichts gebracht! Smile

Über eure Hilfe wäre ich sehr froh.

eis.fig
 Beschreibung:

Download
 Dateiname:  eis.fig
 Dateigröße:  3.24 KB
 Heruntergeladen:  563 mal


And r é

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.01.2011, 17:33     Titel:
  Antworten mit Zitat      
Hallo Sebastian,

ich hoffe dir hiermit helfen zu können (auch wenn ich mir die .fig gerade auf die schnelle nicht angeschaut hab).
Ich nehme an der GUI-guide ist bereits geöffnet und du hast bereits ein Pop-Up ins Feld gezogen. Zum Ansprechen des Pop-Up brauchst du den "Tag". Klicke doppelt auf das Pop up und du kannst diesen im Property Inspector lesen.
Jetzt musst du rechts klicken und auf "M-File-Editor". Hier sind die ganzen Aufrufe.
Jetzt suche die allererste Funktion. Diese heißt ungefähr so
function namederfunktion_OpeningFcn (hObject, eventdata, handles, varargin)
Darunter kannst du jetzt z.B. festlegen, was von grundsätzlich als Möglichkeiten deiner Pop-Ups ausgewählt werden kann.
Das funktioniert so:
set(handles.popupmenueisauswahl,'String',{'Vanille', 'Schokolade','Kirsche'});
Übersetzt heißt das: Ich greife auf das Handle Popupmenueisauswahl zu, was immer der "Tag" ist und "setze" für den String folgendes Array "Vanille...."
Jetzt wenn du das Programm laufen lässt, kannst du schon mal auswählen.
Um das jetzt auslesen zu lassen, kannst du einfach den Befehl "get" nutzen.
Du brauchst z.B. ein Pushbutten um deine GUI zu starten oder die Ausgabe zu starten.
Also ziehe einen Pushbutton rein, öffne das M-File und suche die Callback-Function mit dem Tag von dem Pushbutton.
Darunter kannst du jetzt schreiben, was ausgeführt werden soll, wenn du diesen drückst.
z.B. disp('Hallo')
also wenn du auf den Button drückst wird "Hallo" im Command Window dargestellt.
in deinem Fall machst du eben
nummer=get(handles.popupmenueisauswahl,'Value') -> er holt sich je nachdem was gewählt ist die Zahl 1 oder 2 oder 3 (er weißt jeder Eissorte Vanille, Schoko usw einen 'Value' zu)
dann
eissorten=get(handles.popupmenueisauswahl,'String') -> er holt scih Vanille, Schoko, Kirsche
und um das passende darzustellen machst du schließlich
disp(eissorten(nummer))
es geht bestimmt auch einfacher, aber so sollte es funktionieren.
Solltest du das Ergebnis nicht im Command Window darstellen wollen sondern wiederum in ein Textfeld der GUI schreiben wollten machst du eben anstatt disp(eissorten(nummer)):
set(handle.tagvondemreinzuschreibendemfeld,'String',eissorten(nummer))
und alles direkt unter die Funktion Pushbutton.

So, ich hoffe ich konnte dir behilflich sein.

Viele Grüße und einen schönen Abend,

André
 
Sebastian Kling

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.01.2011, 14:41     Titel:
  Antworten mit Zitat      
Vielen Dank André für deine rasche Antwort! Smile

Ich habe das jetzt so angewandt und es funktioniert! Zumindest bei der Abfrage der Eissorte. Schokolade=1, Vanille=2 und Erdbeere=3.

Das Edit Feld (Anzahl der Eiskugeln) habe ich auch hinbekommen. Und zwar mit
Code:

kugeln_str=get(handles.edit1,'String');
kugeln=str2double(kugeln_str)
 


Ich finde das aber etwas umständlich. Kann man die Eingabe nicht direkt als Value definieren?

Probleme habe ich noch bei der Anzahl der Kinder! Bei dem Beispiel ist es etwas abwägig, aber nehmen wir an, dass ich in dem popupmenu 5.0, 4.5, 4.0 stehen haben will. Diese Werte sollen dann auch so als Variable übernommen werden!

Ich habe folgendes versucht:
Code:

switch get(handles.popupmenu4,'String')  
    case 1
        set (kinder_str==5.0)
    case 2
        set (Kinder_str==4.5)
    case 3
        set (Kinder_str==4.0)
end

kinder=str2double(Kinder_str)
 


Aber es will nicht klappen. Sad

In der Opening function ist die ANzahl der Kinder auch als string definiert. Das muss doch irgendwie einfacher gehen. Smile

Gruß
Basti
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.01.2011, 15:00     Titel:
  Antworten mit Zitat      
Code:

switch get(handles.popupmenu4,'Value')  
    case 1
        kinder=5.0;
    case 2
       kinder=4.5;
    case 3
       kinder=4.0;
end

 
 
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.