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

Drop-down menu mit Bilddisplay

 

clustering_n00b
Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 30.10.2012, 10:30     Titel: Drop-down menu mit Bilddisplay
  Antworten mit Zitat      
Hallo zusammen! Very Happy

Starte gerade mein neues Abenteuer in MATLAB, und zwar arbeite ich nun mit GUI's.

Ich möchte was ganz einfaches erstellen, komme aber mit dem GUI Editor von MATLAB nicht ganz zurecht.

Aussehen (siehe Attachment):
1) Drop-down menu mit mehreren Bildnamen zu Auswahl
2) Pushbutton: Go
3) 2 Panels, die zu Anfang leer sind

Funktionalität:
Sobald der User ein Bild auswählt und auf 'Go' klickt wird im ersten Panel das entsprechende Bild angezeigt.
Im zweiten Panel wird eine C-Funktion ausgeführt und das resultierende Bild angezeigt.

Das Aussehen habe ich mit dem Editor angefertigt, aber die Funktionalität weiss ich nicht zu implementieren.

Ideen?

Screen shot 2012-10-30 at 10.56.33 AM.png
 Beschreibung:

Download
 Dateiname:  Screen shot 2012-10-30 at 10.56.33 AM.png
 Dateigröße:  16.64 KB
 Heruntergeladen:  529 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 30.10.2012, 11:27     Titel:
  Antworten mit Zitat      
Hallo,

wenn du die GUI speicherst, wird eine .m-Datei erzeugt. Dort werden sämtliche auszuführenden Aktionen hinterlegt.

In deinem Fall musst du wohl den Callback des Pushbuttons anpassen. Sprich: zunächst abfragen, welches Bild ausgewählt wurde, es dann in das erste Koordinatensystem plotten, die Funktion ausführen, dann in das zweite Koordinatensystem plotten.

Nebenfrage: wie wird das Drop-down Menu mit Einträgen befüllt?

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

Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 30.10.2012, 15:17     Titel:
  Antworten mit Zitat      
Hi Harald!

Die Antwort auf die Nebenfrage ist in mit '(color=red)..(/color) markiert.

Ich möchte einfachheitshalber überprüfen ob beim Klick auf 'Display' überhaupt was passiert und habe deshalb ein einfaches 'Print-Statement' geschrieben.

hObject.dropdownenvironment (Tag-Name des Drop-Down Menüs) soll die entsprechenden Werte holen.


Code:

.....
% --- Executes on selection change in dropdownenvironment.
function dropdownenvironment_Callback(hObject, eventdata, handles)
% hObject    handle to dropdownenvironment (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

[color=red]
contents = cellstr(get(hObject, 'String'))
contents{get(hObject, 'Value')}
[/color]

[color=blue] sprintf('%s', contents{get(hObject, 'Value')})[/color]
.......

% --- Executes on button press in displaybutton.
function displaybutton_Callback(hObject, eventdata, handles)
% hObject    handle to displaybutton (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)


dropdownlist = cellstr(get(hObject.dropdownenvironment, 'String'));
env = dropdownlist{get(hObject.dropdownenvironment, 'Value')};

switch env
    case 'name1'
        sprintf('%s', env);
    case ''name2'
        sprintf('%s', env);
    case 'name3'
        sprintf('%s', env);
    case 'name4'
    otherwise
        % do nothing, since user has not selected anything
        % case: 'Choose Environment'
end
....

 



Jedoch bekomme ich die folgende Fehlermeldung. Anscheinend stimmt die Referenz hObject.dropdownenvironment nicht. Wenn ich die Werte innerhalb der dropdownenvironment_Callback Funktion anzeigen lasse (siehe (color=blue)..(/color)), werden sie korrekt ausgegeben im Command Window.

Zitat:

Attempt to reference field of non-structure array.

Error in Test>displaybutton_Callback (line 109)
dropdownlist = cellstr(get(hObject.dropdownenvironment, 'String'));

Error in gui_mainfcn (line 96)
feval(varargin{:});

Error in Test (line 42)
gui_mainfcn(gui_State, varargin{:});

Error in
@(hObject,eventdata)Test('displaybutton_Callback',hObject,eventdata,guidata(hObject))


Error while evaluating uicontrol Callback


Zuletzt bearbeitet von clustering_n00b am 30.10.2012, 15:23, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Die Handles auf die anderen GUI-Elemente sind in der Handles-Struktur. Du müsstest also so damit arbeiten:

Code:
dropdownlist = cellstr(get(handles.dropdownenvironment, 'String'));
env = dropdownlist{get(handles.dropdownenvironment, 'Value')};


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

Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 30.10.2012, 15:30     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:

Die Handles auf die anderen GUI-Elemente sind in der Handles-Struktur. Du müsstest also so damit arbeiten:

Code:
dropdownlist = cellstr(get(handles.dropdownenvironment, 'String'));
env = dropdownlist{get(handles.dropdownenvironment, 'Value')};



Sorry - hab's jetzt editiert.

Stimmt - mit handles hat's nun geklappt!

Im Code selber ist im Kommentar angegeben, dass man dafür hObject braucht.

Code:
% Hints: contents = cellstr(get(hObject,'String')) returns dropdownenvironment contents as cell array
%        contents{get(hObject,'Value')} returns selected item from dropdownenvironment


Wieso hObject im Original und handles in einer anderen Funktion?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

handles enthält die Handles auf alle Elemente einer GUI.

hObject ist das Handle auf das Element der GUI, aus dem der Callback getriggert wurde. Je nach Stelle im Code kann hObject also beispielsweise den Wert von handles.dropdownenvironment oder den Wert von handles.displaybutton annehmen.

Ich persönliche arbeite bevorzugt mit der Handles-Struktur.

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

Forum-Century

Forum-Century


Beiträge: 129
Anmeldedatum: 05.09.11
Wohnort: ---
Version: R2011a, R2012b
     Beitrag Verfasst am: 30.10.2012, 22:33     Titel:
  Antworten mit Zitat      
Ach so ist das.

Ja, dann ist alles klar - vielen Dank nochmals, Harald! Very Happy
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.