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

4 Checkboxen erstellen

 

ToZi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2009, 16:20     Titel: 4 Checkboxen erstellen
  Antworten mit Zitat      
Hallo,

ich mache gerade meine allerersten Schritte mit MatLab und hätte mal ne Frage.
Ist (bzw. wie geht es) es möglich ein Fenster (figure) zu öffnen auf dem sich 4 Checkboxen (links untereinander) und ein OK-Button (unten rechts) befinden.

Wenn dann der "OK" - Button gedrückt wird, wird eine Funktion mit 4 Parametern (also jeweils den Werten (0/1) der checkboxen) aufgerufen.

Irgendwie stehe ich da gerade total auf dem Schlauch....

Gruß,

Zito


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 16.06.2009, 16:33     Titel:
  Antworten mit Zitat      
Moin,

klar geht das.

Guck dir mal die Beispiele hier im Forum zum Thema GUI an (Skripte-Ecke). Versuch dich mal etwas reinzudenken in das Thema GUI (auch die Hilfe gibt einiges dazu her) und bei weiteren Fragen... - weißt ja Wink

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
 
ToZi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2009, 17:01     Titel:
  Antworten mit Zitat      
Hallo,

habe jetzt deine funktion set_uicontrol gefunden ^^

Dazu gleich mal ne Frage welche eigenlich nix mit dem Problem zu tun hat.
wie funktioniert die positionierung ?

'Position',[.375,.375,.25,.25]);
ist das [Xstart Ystart Xend Yen] ? und wenn .x .y ist das dann eine relative angabe ?

Wenn ich deine checkboxen jetzt untereinander haben möchte muss ich dann :
Code:
uicontrol(ckb,'Style','checkbox','String','1',...
          'Units','normalized','pos',[0,0,1/8,1]);
uicontrol(ckb,'Style','checkbox','String','2',...
          'Units','normalized','pos',[0, 1/8,1/8,1]);
uicontrol(ckb,'Style','checkbox','String','3',...
          'Units','normalized','pos',[0,2/8,1/8,1]);
uicontrol(ckb,'Style','checkbox','String','4',...
          'Units','normalized','pos',[0,3/8,1/8,1]);


schreiben ?
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 16.06.2009, 17:45     Titel:
  Antworten mit Zitat      
Moin,

die Positionen werden mit [xStart yStart Breite Höhe] angegeben, dabei wird von links unten angefangen zu zählen. Bei mir habe ich als 'Units' 'normalized' verwendet, das bedeutet, dass die Größen in Abhängigkeit der Abmessungen des 'Parent'-Objekts berechnet werden. Wenn du die untereinander haben willst, dann musst du darauf achten, dass "xStart" bei allen gleich ist und die Differenz zwischen je 2 "yStart" mindestens "Höhe" ist. Damit das erste Objekt auch oben steht, muss "yStart" bei diesem am größten sein.

Ich hoffe das hilft schonmal weiter...

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
 
ToZi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2009, 17:46     Titel:
  Antworten mit Zitat      
ich habe mal folgenden code geschrieben :
Code:

figure(h.this)
delete_grp(h)

hh.grp = uipanel(...
    'Units','normalized',...
    'Position',[.14 .02 .84 .96 ]);
BackgroundColor = get(hh.grp,'BackgroundColor');

hh.header = uicontrol(...
    'Style','text',...
    'Units','pixels',...
    'Position',[50 810 600 40],...
    'parent',hh.grp,...
    'String','TESTLAUF',...
    'HorizontalAlignment','center',...
    'FontSize',20,...
    'BackgroundColor',BackgroundColor);
hh.btn_check1 = uicontrol(...
    'Style','checkbox',...
    'String','FiF',...
    'Units','pixels',...
    'Position',[50 400 100 30],...
    'Parent',hh.grp);
hh.btn_check2 = uicontrol(...
    'Style','checkbox',...
    'String','MiM',...
    'Units','pixels',...
    'Position',[50 350 100 30],...
    'Parent',hh.grp);
hh.btn_check3 = uicontrol(...
    'Style','checkbox',...
    'String','FiB',...
    'Units','pixels',...
    'Position',[50 300 100 30],...
    'Parent',hh.grp);
hh.btn_check4 = uicontrol(...
    'Style','checkbox',...
    'String','MiM',...
    'Units','pixels',...
    'Position',[50 250 100 30],...
    'Parent',hh.grp);
hh.btn_go = uicontrol(...
    'Style','pushbutton',...
    'String','START',...
    'Units','pixels',...
    'Position',[200 150 100 30],...
    'Parent',hh.grp,...
    'Callback','TEST1(''testreport'');');
 


ich denke er macht zumindest mal 4 Checkboxen und einen Start-Button ^^
Wie kann ich jetzt aber die werte mit dem Start Button der Funktion "testreport" übergeben ?
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 16.06.2009, 18:00     Titel:
  Antworten mit Zitat      
Moin,

was ist testreport für eine Funktion? Was benötigt sie als Parameter?
Im Prinzip musst du jetzt eine Callback-Funktion schreiben.
Beispiel:
Code:
function testGUI

% [...]

hh.btn_go = uicontrol(...
    'Style','pushbutton',...
    'String','START',...
    'Units','pixels',...
    'Position',[200 150 100 30],...
    'Parent',hh.grp,...
    'Callback',@GoButtonCallback);

    function GoButtonCallback(hObject, eventdata)
        FiF = get(hh.btn_check1,'Value');
        % usw.
        % Aufruf deiner Funktion testreport (?!)
        testreport(FiF,...);
    end
end


Ohne Gewähr, da nicht getestet...

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
 
ToZi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.06.2009, 18:26     Titel:
  Antworten mit Zitat      
Schaut schon mal sehr gut aus, schon mal vielen vielen Dank !

Aber ich hätte noch ne Frage :

Code:

function GoButtonCallback(hObject, eventdata)
 


was sind die beiden Parameter hObject und eventdata ? so wie ich das sehe wird doch die Funktion ohne Parameter aufgerufen oder ?
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 16.06.2009, 20:11     Titel:
  Antworten mit Zitat      
Moin,

die beiden Parameter werden automatisch übergeben. "hObject" ist der handle zu dem Objekt, von welchem die Callback aufgerufen wurde und "eventdata" ist im Moment soweit ich weiß ein Platzhalter, kann aber auch für eigene Zwecke verwendet werden (ich hab hier im Forum schon mal was dazu gelesen).

Normalerweise wird noch die handles-Struktur des GUIs übergeben, da du allerdings keine erstellt hast, hab ich das weggelassen.

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
 
ToZi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2009, 12:03     Titel:
  Antworten mit Zitat      
Wenn ich das so mache bekomme ich folgende Fehlermeldung :


Code:

Undefined variable "hh" or class "hh.btn_check1".

Error in ==> faceRecognition>GoButtonCallback
        FiF = get(hh.btn_check1,'Value');
 
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 17.06.2009, 12:08     Titel:
  Antworten mit Zitat      
Moin,

hast du das denn genauso gemacht wie ich geschrieben habe? Eine "große" Funktion die die Erstellung der Figure mit den UIControls beinhaltet und in dieser dann die Callback definiert? Dann sollte es eigentlich gehen.

Ansonsten kannst du es auch so machen:
Code:
FiF = get(findobj('Style','checkbox','String','FiF'),'Value');


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
 
ToZi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2009, 15:41     Titel:
  Antworten mit Zitat      
Hallo habs genauso gemacht, ja , ging aber nicht.

mit :
Code:

FiF = get(findobj('Style','checkbox','String','FiF'),'Value');
 


geht es !
Kann ich das aber auch mit dem "Namen" der checkbox machen anstatt des Strings ?

z.B :

Code:

btn_check1 = uicontrol(...
    'Style','checkbox',...
    'String','FiF',...
    'Units','pixels',...
    'Position',[20 190 250 20],...
    'Parent',grp);
 


Das ma da nicht nach "FiF" sucht sondern nach "btn_check1" ?
 
ToZi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2009, 15:49     Titel:
  Antworten mit Zitat      
Ach und noch eine Frage.

Ich hätte gern das von meinen 4 checkboxen, die ersten beiden als Default-Wert ausgewählt sind, geht das ?
 
ToZi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2009, 16:10     Titel:
  Antworten mit Zitat      
Ok, also das mit den Default-Wert habe ich

Code:

btn_check1 = uicontrol(...
    'Style','checkbox',...
    'String','FiF',...
    'Units','pixels',...
    'Position',[20 190 250 20],...
    'Parent',grp,...
    'Value',1);
 


Aber on ich diese checkbox auch mit "btn_check1" ansteuern bzw. ob ich den wert davon so bekommen kann weiss ich leider noch nicht Sad
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 17.06.2009, 18:12     Titel:
  Antworten mit Zitat      
Moin,

dann probier Folgendes:
Code:
function testGUI

% [...]

hh.btn_go = uicontrol(...
    'Style','pushbutton',...
    'String','START',...
    'Units','pixels',...
    'Position',[200 150 100 30],...
    'Parent',hh.grp,...
    'Callback',{@GoButtonCallback,hh});

    function GoButtonCallback(hObject, eventdata,hh)
        FiF = get(hh.btn_check1,'Value');
        % usw.
        % Aufruf deiner Funktion testreport (?!)
        testreport(FiF,...);
    end
end


Sollte jetzt hoffentlich klappen. Ansonsten müsstest du dich mal in die Verwendung von
Code:
einarbeiten. In der Skripte-Ecke gibt es dazu auch schon ein Beispiel.

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
 
ToZi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2009, 20:13     Titel:
  Antworten mit Zitat      
Funktioniert leider nicht Sad

Folgende Fehlermeldung kommt dann :

Code:

??? Undefined function or variable 'btn_ck1'.

Error in ==> faceRecognition>GoButtonCallback at 1522
        FiF = get(btn_ck1,'Value');
 
??? Error while evaluating uicontrol Callback

 


Anmerkung:
habe hh.btn_check1 in btn_ck1 unbenannt.

Naja werde ich mal schauen müssen wie ich das hinbekomme ... ich weiss zwar momentan nicht wie ich das machen soll aber mal sehen.

Vielen, vielen Dank @ Steve !!! echt super wie du immer tipps gibst.
Nochmal Danke!
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.