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

Checkboxen verknüpfen für Anfänger

 

Checkboxer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.10.2011, 20:01     Titel: Checkboxen verknüpfen für Anfänger
  Antworten mit Zitat      
Hallo liebe Matlabnutzer,

ich habe mir ein paar Funktionen geschrieben und eine GUI als Eingabemaske erstellt. In der GUI habe ich für jede Funktion einen Button, der die jeweilige Funktion ausführt. Jede Funktion berechnet etwas und gibt einen Plot aus.
Jetzt zu meinem Problem:
Ich will Checkboxen hinter die Buttons setzen. Diese sollen bei anklicken die Grafik ausgeben und bei nicht anklicken die Grafik verweigern.
Wie geht man da vor?

Ich habe mir schon eine Checkbox auf die GUI gezogen. Diese ist jetzt im GUI Skript. Den Wert (1 oder 0) bekomme ich über
Code:
 handles.checkbox1 = get(hObject,'Value');

oder täusche ich mich?
Wie verknüpfe ich das jetzt mit dem Button und der Grafikausgabe?

Danke für die Hilfe!!!


Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 07.10.2011, 23:36     Titel:
  Antworten mit Zitat      
Hallo,

also am besten fragst du einfach beim Klicken des Buttons ab, ob die Checkerbox aktiviert ist oder eben nicht (Über den "Value," wie du ja schon selber rausgefunden hasst):

Code:

function Button_Callback
if get(handles.checkerbox,'Value')
 % function mit plot
else
 % function ohne plot
end
 


handles.checkerbox ist der "Tag" der Checkerbox.

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Checkboxer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2011, 14:31     Titel:
  Antworten mit Zitat      
Hey Sco,

ich wollte eigentlich die ganzen Programme nicht in die GUI reinpacken. Dann müsste ich die if Bedingung doch einfach um den Plot setzen oder?

Aber wie greife ich dann auf den Wert der Checkbox zu?

Grüße
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 08.10.2011, 14:42     Titel:
  Antworten mit Zitat      
Hallo,

2 Möglichkeiten:

1.: du übergibt die gesamte handle Struktur deinem Program (unelegante Lösung) und könntest somit direkt darin den "Value" der Checkerbox anfragen:
Code:

if get(handles.checkerbox,'Value')
    plot(x,y)
end
 


oder (die elegantere Lösung) du übergibt deinem Program nur einen Flag, welcher anzeigt ob geplottet werden soll oder nicht:
Code:

% Im GUI
function Button_Callback
if get(handles.checkerbox,'Value')
   CreatePlot = 1; % Flag für "plotten"
else
   CreatePlot = 0; % Flag für "nicht plotten"
end

% bzw.: CreatePlot = get(handles.checkerbox,'Value');

% Aufruf deines Programs mit übergabe des Flags
[output] = programm(..., CreatePlot)

% Im Program
if CreatePlot
    plot(x,y)
end

MFG

Sco
 
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Checkboxer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2011, 15:21     Titel:
  Antworten mit Zitat      
HEy Sco,

wenn ich das so mache wie du schreibst kommt die Fehlermeldung:

Code:
??? Reference to non-existent field 'createPlot'.


Sad
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.10.2011, 15:52     Titel:
  Antworten mit Zitat      
Hallo Checkboxer,

Und welche Zeile erzeugt diesen Fehler?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Checkboxer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2011, 16:22     Titel:
  Antworten mit Zitat      
Hey,

die hier:

result = funktion1_plot(handles.B,handles.n,handles.createPlot);
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 08.10.2011, 16:55     Titel:
  Antworten mit Zitat      
Hallo,

hasst du in der function wo das Flag erstellt wird (also dein handles.createPlot) auch am Ende die handles Struktur mit
Code:

guidata(hObject, handles);
 

geupdated? Das Problem ist nämlich, dass beim Aufruf

result = funktion1_plot(handles.B,handles.n,handles.createPlot);

kein Feld "createPlot" im Struct handles enthalten ist.

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Checkboxer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.10.2011, 17:22     Titel:
  Antworten mit Zitat      
Yes,

danke ich habe es hinbekommen. Ich musste den Funktionsaufruf ändern, dann gings.

Danke euch 2!
 
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.