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

Neuinitialisierung eines GUI's nach Datenaustausch

 

chris136tb
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 23.10.12
Wohnort: ---
Version: R2012a
     Beitrag Verfasst am: 23.10.2012, 11:02     Titel: Neuinitialisierung eines GUI's nach Datenaustausch
  Antworten mit Zitat      
Hallo zusammen,

ich bin gerade dabei ein GUI zu programmieren (mittels GUIDE). Über einen pushbutton wir ein SubGUI aufgerufen, über welches zusätzliche Parameter eingelesen werden und zurück an das HauptGUI gegeben werden.

In meinem HauptGUI verwende ich eine radiobutton-group, mit der ich verschiedene Voreinstellungen vornehmen kann. Da ich einen definierten Ausgangszustand benötige, wird in der OpeningFcn des HauptGUI ein bestimmter radiobutton aktiviert und anschließend die SelectionChangeFcn der radiobutton-group aufgerufen (in Anlehnung an diesen Thread: Radiobuttons aktivieren):

Code:
% --- Executes just before HauptGUI is made visible.
function HauptGUI_OpeningFcn(hObject, eventdata, handles, varargin)
% Initialisierung des Ausgangszustandes über die Radiobuttons    
set(handles.radiobutton1,'Value',1);
uipanel1_SelectionChangeFcn(handles.radiobutton1,eventdata,handles);

% Choose default command line output for HauptGUI
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);


Die SelectionChangeFcn sieht wie folgt aus:

Code:
function uipanel1_SelectionChangeFcn(hObject, eventdata, handles)
% Überprüfung, welcher Button aktiv ist
if hObject == handles.radiobutton1
    set(handles.text1,'String','GUI befindet sich im Init-State');
    guidata(hObject,handles)
elseif hObject == handles.radiobutton2
    set(handles.text1,'String','GUI befindet sich im Run-State');
    guidata(hObject,handles)
end


Nun zeigt sich folgendes Problem. Für mein eigentliches GUI muss ich den Zustand in der Buttongroup verändern, d.h. von "init" auf "run" wechseln, und anchließend das SubGUI aufrufen, um meine Werte zu verändern (edit-Feld). Funktioniert auch soweit. ABER: Wenn ich jetzt auf "Übernehmen" (Code siehe unten) drücke, wird mein HauptGUI neu initialisiert, d.h. über die obige OpeningFcn wird wieder der Ausgangszustand hergestellt Sad

Code:
% Eingabefeld für Übergabewert an HauptGUI
function edit1_Callback(hObject, eventdata, handles)
handles.Uebergabe = get(hObject,'String');
guidata(hObject,handles)


% Übernehmen des eingegebenen Wertes und Übergabe an HauptGUI
function pushbutton1_Callback(hObject, eventdata, handles)
mainGUIhandle = HauptGUI;
mainGUIdata = guidata(mainGUIhandle);
mainGUIdata.Durchmesser = handles.Uebergabe;
guidata(HauptGUI, mainGUIdata)
close(SubGUI)


Gibt es eine Möglichkeit, diese Neu-Initialisierung zu unterdrücken / umgehen? Ich hab das Gefühl, dass ich vor lauter Bäumen den Wald nicht mehr sehe...

Vielen Dank schonmal!!

Beste Grüße
Chris
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: 23.10.2012, 16:15     Titel:
  Antworten mit Zitat      
Hallo,

das Problem dürfte in der Zeile:
Code:
mainGUIhandle = HauptGUI;

liegen. Dadurch wird eine neue Instanz der GUI geöffnet.

Empfehlung:
- Beim Aufruf der SubGUI das Handle des HauptGUI übergeben.
- Diese Eingabe in der OpeningFcn des SubGUI verarbeiten und in der Handles-Struktur mit abspeichern.
- Bei Bedarf dieses Handle aus der Handles-Struktur herausholen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 23.10.12
Wohnort: ---
Version: R2012a
     Beitrag Verfasst am: 24.10.2012, 14:07     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für deine Antwort!!!! Nach der Übergabe des figure-handles des HauptGUI an mein SubGUI kann ich die Daten nun bearbeiten Smile

Klasse, vielen Dank für die kompetente Hilfe!

Beste Grüße
Chris
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.