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

Mehrere Bilder über einen Push-Button

 

Yannick

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2011, 16:30     Titel: Mehrere Bilder über einen Push-Button
  Antworten mit Zitat      
Guten Tag liebe Com,
ich bin ein Neuling in Matlab und habe ein essenzielles Problem.

Ich habe eine GUI erstellt, in der ich gerne über einen PushButton ein Bild einfügen möchte, der Name des Bildes soll dann in einer Listbox ausgegeben werden.
Über diesen einen Pushbutton (Load Images) möchte ich gerne auch weitere Bilder hinzufügen können, die dann auch in der Listbox angezeigt werden (also die Namen der Bilder, nicht die Bilder).

Ich hatte schon ein bisschen rumprobiert, mein Problem war nur, dass der eine Button, bzw. die Callbacks des Pushbutton quasi alles immer wieder zurücksetzen sobald ich nochmal draufklicke. Also lade ich ein Bild und klicke nochmal auf den Button, läd er kein weiteres Bild, sondern ein neues Bild an Stelle des 1. Bildes.

Ich hoffe mein Problem ist verständlich formuliert und es kann mir jmd ein paar Tricks nennen, mit denen ich die Callbackfunktion des Buttons programmieren kann.

Gruß, Yannick


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.08.2011, 00:00     Titel: Re: Mehrere Bilder über einen Push-Button
  Antworten mit Zitat      
Hallo Yannick,

Bitte poste den relevanten Code. Ansonsten haben wior keine Chance das Problem zu finden.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.08.2011, 10:08     Titel:
  Antworten mit Zitat      
Hallo

wenn du etwas zu Listbox hinzufügen möchtest, dann muss du zuerst den alten Inhalt aus Listbox auslesen, sonst überschreibst du.

Code:

neu_bild_name = 'test2.jpg';

% alten inhalt auslesen
alt_inhalt   = get(handles.listbox,'String')

% zusammensetzen
neu_inhalt = [alt_inhalt, neu_bild_name]

% zurückschreiben
set(handles.listbox,'String',neu_inhalt)
 
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2011, 11:12     Titel:
  Antworten mit Zitat      
Okay, also im Moment bin ich soweit:
Code:

function GLCM_Gui_v1_OpeningFcn(hObject, eventdata, handles, varargin)
% Choose default command line output for GLCM_Gui_v1
handles.output = hObject;

%Zähler
handles.z = hObject;
handles.z = 1;


% Update handles structure
guidata(hObject, handles);

[color=green]------> Anmerkung: Hier soll quasi eine laufende Zahl initialisiert werden. Ich hoffe das ist soweit korrekt, nun zur Callback des Pushbuttons:[/color]

function load_Callback(hObject, eventdata, handles)

% Global laufende Zahl
handles.z = handles.z+1;

% Updaten der globalen Zahl
guidata(hObject, handles);

%Zahl in Variable umwandeln
handles.z = 1i;

%Variable in string umwandeln
bild = num2str(1i);

%den sich immer ändernden string -> eingeladene Bilder
bild = uigetfile ('*.tif', 'Load TIF Image');

% alten inhalt auslesen
alt_inhalt   = get(handles.dateien,'String');

% zusammensetzen
neu_inhalt = [alt_inhalt, bild];

% zurückschreiben
set(handles.dateien,'String',neu_inhalt);
 


Ich fürchte, ich hab irgendwas mit der Funktion num2str noch nicht so ganz verstanden^^. Ich dachte er macht da aus einer Zahl einen String, dem scheint wohl nicht so, wüsste aber auch im Moment nicht, wie ich es besser formulieren soll.

Also mein problem ist quasi, ich habe schon eine global laufende Zahl, die will ich jetzt irgendwie in Verbindung mit den einzuladenen Bildern bekommen, so dass quasi wenn die Zahl 1 ist, eine Datei "bild1" eingeladen wird, wenn die Zahl 2 ist, "bild2" usw...

Mein Fehler sieht zZt so aus:
??? Error using ==> horzcat
CAT arguments dimensions are not consistent.

Error in ==> GLCM_Gui_v1>load_Callback at 106
neu_inhalt = [alt_inhalt, bild];

Error in ==> gui_mainfcn at 96
feval(varargin{:});

Error in ==> GLCM_Gui_v1 at 42
gui_mainfcn(gui_State, varargin{:});

Error in ==> @(hObject,eventdata)GLCM_Gui_v1('load_Callback',hObject,eventdata,guidata(hObject))


??? Error while evaluating uicontrol Callback


Gruß, danke für die Hilfe!
 
BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 19.08.2011, 12:24     Titel:
  Antworten mit Zitat      
num2str macht genau das was du beabsichtigst, aus einer Zahl einen String machen.

Code:
%Zahl in Variable umwandeln
handles.z = 1i;

%Variable in string umwandeln
bild = num2str(1i);


das num2str(1i) ergibt den String '0+1i' da Matlab das als komplexe Zahl interpretiert, was an sich ja auch sinnvoll ist.

wieso weißt du handles.z 1i zu?

die handles solltest du vielleicht auch erst später updaten Wink

Gruß Chris
Private Nachricht senden Benutzer-Profile anzeigen
 
Yannick
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 19.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2011, 12:42     Titel:
  Antworten mit Zitat      
Vielen Dank für die Antwort. Ich fürchte ich hab das 1i genannt, weil Matlab das so wollte Very Happy. Wie meinst du das mit dem später updaten?

Zum aktuellen Stand: es funktioniert nun. Ich kann alle Bilder ohne Probleme einladen und anzeigen lassen (ich hoffe ich kann hinterher auch zugreifen). Ich poste mal grade den Code, falls jmd das selbe Problem hat:


Code:
function GLCM_Gui_v1_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

%Zähler
handles.z = hObject;
handles.z = 1;


% Update handles structure
guidata(hObject, handles);


function load_Callback(hObject, eventdata, handles)

% Global laufende Zahl
handles.z = handles.z+1;

% Updaten der globalen Zahl
guidata(hObject, handles);

% Zahl in Variable umwandeln
h = handles.z;

% Variable in string umwandeln
bild = num2str(h);

% den sich immer ändernden string -> eingeladene Bilder
bild = uigetfile ('*.tif', 'Load TIF Image');

% alten inhalt auslesen
alt_inhalt = cellstr(get(handles.dateien,'String'));

% zusammensetzen
neu_inhalt = [alt_inhalt; bild];

% zurückschreiben
set(handles.dateien,'String',neu_inhalt);




Vielen Dank für die Hilfe, vllt brauch ich im weiteren Verlauf der GUI nochmal welche, ich melde mich dann einfach.
Danke, Gruß


Noch eine Frage: Hat er in den jetzt ausgegeben Strings in der Listbox auch die Informationen der Bilder hinterlegt?
Also kann ich jetzt über die Strings der Listbox hinterher in meinem Programm auf die Bilder zugreifen?
Wenn nicht, wie mach ich das (global)?
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.