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

Pushbutton Callback

 

MrPronin
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 18.03.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.04.2008, 20:17     Titel: Pushbutton Callback
  Antworten mit Zitat      
Hallo alle zusammen!!!
Vielleicht kann mir jemand helfen. Mein Problem ist ein Pushbutton und sein Callback. Wenn der Button gedrückt wird, muss ich ein Wert inkrementieren (z.B. I=I+1), aber um einen bestimmten Wert zu erreichen, muss ich i-mal auf den Knopf drücken, was nicht schön ist. Ist es möglich eine Schleife in Callback einzufügen, die solange ablaufen soll, bis Pushbutton losgelassen ist? Komme alleine nicht zurecht.
Danke im Voraus
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 26.04.2008, 20:52     Titel:
  Antworten mit Zitat      
Hallo,
dafür sollst du dir noch eine Funktion bei deinem PushButton in GUIDE->Property Inspector unter Menupunkt ButtonDownFcn definieren.
Oder einfach den Callback dort übergeben.

In Menupunkt ButtonDownFcn definierte Funktion wird aufgerufen, wenn die Maus gedrückt wird.

Viel Erfolg
Private Nachricht senden Benutzer-Profile anzeigen
 
outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 26.04.2008, 21:37     Titel:
  Antworten mit Zitat      
Code:
function StopWhileLoop(action)

if nargin==0
   ssz = get(0,'ScreenSize');
   figure('units','pixels','menubar','none', ...
          'position',[ (ssz(3:4)-[200 100])/2 200 100 ]);
   uicontrol('position',[50 40 100 30], ...
            'String','START', ...
            'callback','StopWhileLoop(''start'')')
   return
end

switch action
   case 'start'
      %
      set(gcbo,'String',setdiff({'START' 'STOP'},get(gcbo,'String')));
      %
      %       if strcmp('START',get(gcbo,'String'))
      %          set(gcbo,'String','STOP')
      %       else
      %          set(gcbo,'String','START')
      %          return
      %       end
      %
      % while-loop
      %
      i=1;
      while strcmp('STOP',get(gcbo,'String'))
         %
         disp(sprintf('while-loop active :%d',i));
         i = i+1;
         %
         drawnow % <- darf nicht entfernt werden!!!
      end
   %
end


Ich gebe zu der Code nicht optimal - der Callback sollte lieber über ein function handle erfolgen, aber als Beispiel reicht... Smile

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
MrPronin
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 18.03.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.04.2008, 20:36     Titel:
  Antworten mit Zitat      
Danke für die Vorschläge und schnelle Antworte
denny hat Folgendes geschrieben:
Hallo,
dafür sollst du dir noch eine Funktion bei deinem PushButton in GUIDE->Property Inspector unter Menupunkt ButtonDownFcn definieren.
Oder einfach den Callback dort übergeben.

In Menupunkt ButtonDownFcn definierte Funktion wird aufgerufen, wenn die Maus gedrückt wird.

Viel Erfolg

Genau so wollte ich machen, aber es funktioniert einfach nicht.... Bsp.:

% --- Executes on button press in pushbutton1.

function pushbutton1_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

set(handles.text1,'String','2');




% --- If Enable == 'on', executes on mouse press in 5 pixel border.

% --- Otherwise, executes on mouse press in 5 pixel border or over pushbutton1.

function pushbutton1_ButtonDownFcn(hObject, eventdata, handles)

% hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

set(handles.text1,'String','1');
Was ich erwarte von diesem Code:
Ich drücke den Knopf und es soll im StaticText1 eine ! erscheinen, sobald ich den Knopf los lasse, soll 2 erscheinen. Und es funktioniert nur mit 2, wenn ich drauf drücke, passiert nix, nur wenn ich erst los lasse wird 2 ausgegeben, d.h. function pushbutton1_ButtonDownFcn(hObject, eventdata, handles)
wird einfach ignoriert, oder mache ich was falsch?
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 28.04.2008, 15:16     Titel:
  Antworten mit Zitat      
Hallo, hab mal auch ausprobiert
irgend wie komische Funktionsweise bei ButtonDownFcn in PushButton, Linke Maus geht nicht, Rechte schon.

Ich weiß nicht wo das Problem liegt, es könnte sein das Linke Maus schon für Callback reserviert ist.

Ich würde dir eigentlich zu diesem Zeitpunkt das Gleiche vorschlagen, wie Outsider, solange counter laufen lassen bis ein Stop-Button gedrückt wird.
Ist viel einfacher zu realisieren.
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.