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

Hilfe beim manuellen erstellen von GUIs

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.08.2008, 15:16     Titel: Hilfe beim manuellen erstellen von GUIs
  Antworten mit Zitat      
Ich versuche aktuell eine GUI ohne Guide zu erstellen. Beim Layout der Komponenten hatte ich keine Probleme. Jetzt muss ich aber an der schwierigeren Teil: die Initialisierung. Hier bin ich mit der Matlabhilfe leider nicht sonderlich weit gekommen. Was muss denn hier alles drinstehen? Und wie kann ich mir so eine schöne "handles.XXX"-struktur wie bei GUIDE erstellen?
Gibt es zu dem Thema GUI erstellen ohne GUIDE ein gutes Tutorial, das ihr mit empfehlen könnt?

Oder ist es zu ergeizig eine GUI manuell zu erstellen? Ich habe halt noch nicht den tieferen Einblick in Matlab.

Vielen Dank für alle Antworten im Voraus!


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 15.08.2008, 15:38     Titel:
  Antworten mit Zitat      
Moin,

ich habe bis jetzt alle meine GUIs "per Hand" erstellt, da ich finde, dass man dann einen besseren Überblick darüber hat, was alles passiert...

Den handles-struct kannst du dir ganz einfach erstellen:
Code:

function test_gui

MainWindow = figure('MenuBar','none',...
                     'Name','Test GUI',...
                     'Toolbar','none');

handles.pushbutton1 = uicontrol(MainWindow,'Style','pushbutton',...
                                'String','OK',...
                                'FontWeight','bold',...
                                'FontSize',14,...
                                'Units','normalized',...
                                'Position',[.4,.45,.2,.1],...
                                'Callback',@pushbutton1_callback);

handles.wert1 = 'Juhu, es klappt!';

guidata(MainWindow,handles);

function pushbutton1_callback(hObject,eventdata)
    handles = guidata(hObject);
    h = msgbox(handles.wert1);
    pause(1);
    close(h);
    pause(.5);
    close(MainWindow);
    pause(1);
    test_gui;
end
end
 


Gruß
Alex

/edit: kleinen Fehler behoben
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?

Zuletzt bearbeitet von steve am 15.08.2008, 16:32, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.08.2008, 16:20     Titel:
  Antworten mit Zitat      
Hey super. Danke! Jetzt gehts. Ich war scheinbar schon sehr nah dran mit meinem Code^^.

Eine Zeile aus deinem Code verstehe ich aber nicht ganz.
Code:
handles = guidata(hObject);


Was passiert denn hier? Ohne die Zeile scheint ja gar nichts zu gehen. Muss ich das bei jeden Callback machen?
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 15.08.2008, 16:26     Titel:
  Antworten mit Zitat      
Ich hab es grad nochmal erweitert und überarbeitet:
http://www.gomatlab.de/viewtopic,p,10346.html#10346

Gast hat Folgendes geschrieben:

Eine Zeile aus deinem Code verstehe ich aber nicht ganz.
Code:

handles = guidata(hObject);
 


Mit dieser Zeile stellst du deiner Callback die gespeicherte handles-Struktur wieder zur Verfügung.
Wie dieser Vorgang bei den mit GUIDE erstellten GUIs passiert, ist mir auch nicht klar...

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.08.2008, 10:17     Titel:
  Antworten mit Zitat      
Ich bin wieder auf ein Problem gestoßen:

Ich habe aus meinem HauptGUI ein zweites GUI geöffnet. Ich habe wie üblich das handle mit guidata geladen, die neue figure mit Schaltflächen versorgt und diese ins handle gespeichert. Wenn ich den Inhalt des handles abfrage stehen die Schaltflächen aus beiden GUIs drin (->wunderbar). Wenn ich jetzt aber im Callback eines Buttons das handle lade (guidata) ist es plötzlich leer.

Was habe ich falsch gemacht?
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 19.08.2008, 11:36     Titel:
  Antworten mit Zitat      
Moin,

das ist so etwas schwierig zu sagen - am besten du lädst beide files mal hoch, damit wir den Fehler nachvollziehen können...

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Klara_Vorteil
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 19.08.08
Wohnort: Heilbronn
Version: R2007b
     Beitrag Verfasst am: 19.08.2008, 12:01     Titel:
  Antworten mit Zitat      
Die beiden wichtigen Dateien befinden sich im Anhang. "measureGUI" ist das HauptGUI. Von hieraus öffnet man mit dem "Connect"-Button das zweite GUI. Dieses ist bis jetzt noch größtenteils ohne Funktion. Zum verdeutlichen meines Problems soll beim Klick auf den "OK"-Button der Inhalt von "handles" im Matlab Command-Window ausgegeben werden. Bei mir wird dann folgendes zurückgegeben:
Zitat:
handles =

[]


Es sollte aber in etwa folgendes anzeigen:

Zitat:
handles =

mainWindow: 1
progOut: 2.0095
saveProg: 3.0095
loadProg: 4.0095
mtype: 7.0095
mstartt: 8.0095
mstart: 9.0095
mendt: 10.0095
mend: 11.0095
mnumbert: 12.0095
mnumber: 13.0095
addstart: 14.0095
addend: 15.0095
post: 22.0095
pos: 23.0095
distt: 25.0095
dist: 26.0095
hint: 29.0095
add: 30.0095
connect: 31.0095
startp: 32.0095
iniWindow: 2
iniTab: 35.0096
iniSen: 37.0096
iniok: 38.0096


init_Callback.m
 Beschreibung:

Download
 Dateiname:  init_Callback.m
 Dateigröße:  1.9 KB
 Heruntergeladen:  677 mal
measureGUI.m
 Beschreibung:

Download
 Dateiname:  measureGUI.m
 Dateigröße:  6.5 KB
 Heruntergeladen:  670 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 19.08.2008, 12:21     Titel:
  Antworten mit Zitat      
Ich hab die Dateien jetzt editiert und nochmal angehängt.

Das Problem lag darin, dass du die Eigenschaften von verschiedenen Fenstern in einem Speichern wolltest...

Schau es dir mal an und versuche es nachzuvollziehen...

Gruß
Alex

measureGUI_korr.m
 Beschreibung:

Download
 Dateiname:  measureGUI_korr.m
 Dateigröße:  6.46 KB
 Heruntergeladen:  768 mal
init_Callback_korr.m
 Beschreibung:

Download
 Dateiname:  init_Callback_korr.m
 Dateigröße:  1.84 KB
 Heruntergeladen:  665 mal

_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Klara_Vorteil
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 19.08.08
Wohnort: Heilbronn
Version: R2007b
     Beitrag Verfasst am: 19.08.2008, 12:52     Titel:
  Antworten mit Zitat      
Danke, jetzt gehts. IIch muss mich wohl doch noch mal mit dem guidata auseinandersetzen. Hab ich scheinbar doch noch nicht ganz durchblickt.
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 - 2024 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.