2016-06-18 5 views
-1

Ich würde gerne eine programmatische Möglichkeit finden, um eine Umschaltfläche in Matlab GUI (von GUIDE erstellt) zu wechseln. Die Schaltfläche hat eine Callback-Funktion, die den zweiten Eingang verwendet (eventdata, das ist ziemlich selten). Der Aufruf dieser Funktion von außerhalb der GUI ist jedoch fehlgeschlagen. Ich interessiere mich nicht nur für den visuellen Effekt des An/Aus, sondern provoziere den entsprechenden Rückruf (abhängig vom Zustand des Knopfes). Irgendwelche Ideen?wie programmgesteuert eine Umschaltfläche in einer GUI drücken?

+0

Bitte fügen Sie Ihren Code, der fehlgeschlagen ist, hinzu. – Lati

+0

eventdata ist ein Objekt, das nicht gespeichert oder wiederverwendet werden kann. Ich denke, es ist notwendig, um den Knopf zu aktivieren, aber ich konnte es nicht selbst erzeugen. Im Gegensatz zu anderen Callbacks von GUIDE (wo Eventdaten normalerweise leer sind), fand ich es hier fehlend. Die Buttom-Zeile ist dies: Wie kann ich diese Schaltfläche programmgesteuert umschalten, als ob ich mit der Maus darauf drückte? – NoamG

Antwort

0

eventdata für die Umschaltfläche ist noch nicht definiert (ich verwende v2012). Es wird unterhalb der Callback-Funktion als Kommentar "eventdata reserved - wird in einer zukünftigen Version von MATLAB definiert" geschrieben. Daher können Sie einen beliebigen Wert verwenden, wenn Sie den Rückruf aufrufen. Zum Beispiel, wenn Ihr Umschaltflächen Tag ist ToggleButton1 und seine Callback-Funktion ist togglebutton1_Callback:

togglebutton1_Callback(handles.togglebutton1, 0, handles); 

den Toggle-Button Rückruf anrufen. Wenn Sie den Status der Umschaltfläche ändern möchten, legen Sie für den Push-Status den Wert 1 fest, und 0, um nicht zu drücken.

set(handles.togglebutton1, 'value', 1); 
+0

Obwohl Matlab die Anweisung speichert, dass eventdata für zukünftige Verwendung gespeichert wird, wird es in R2014 bereits verwendet. Hör zu. Die von Ihnen angebotene Lösung wurde bereits überprüft. Es ist jedoch immer noch nicht gut genug, denn beim Aufruf des Callbacks wird eventdata für den aktualisierten Status der Schaltfläche benötigt. – NoamG

+0

Ich konnte es endlich mit Matlab 2015b testen. Wie ich sehen kann, hat die Schaltfläche "toggle" die Funktion eventdata mit den folgenden 2 Eigenschaften: Quelle (Eigenschaften der Schaltflächen) und EventName. Sie können den Callback-Toggle-Button immer noch mit folgender Anweisung aufrufen: "togglebutton1_Callback (handles.togglebutton1, [], handles);" – Lati

Verwandte Themen