Im Grunde habe ich eine wirklich komplexe Matlab GUI, wo der Benutzer verschiedene Strings durch eine editextbox (die man eintippen kann) hinzufügen kann. Das Problem ist, dass ich verschiedene Tasten Pushdowns verschiedene Tastaturfunktionen zugewiesen, zum Beispiel "s" und "e" sind in Verwendung. Bei jeder Eingabe von "Schlange" werden die Funktionen "s" und "e" ausgeführt. Gibt es eine Möglichkeit zu bestimmen, ob ich in der Edittextbox geklickt habe, und es wird -> wie ein logischer Wert verwendet, so kann ich die Tastendruckfunktionen blockieren, indem ich es überprüfe.Ermitteln, ob eine MATLAB GUI edittextbox verwendet wird
2
A
Antwort
0
Innerhalb Ihrer Rückmeldung können Sie gco
verwenden, um das aktuelle Objekt abzurufen. Sie können dann überprüfen, ob dies der Grafik-Handle zu Ihrem Bearbeitungsfeld ist.
fig = figure('WindowKeyPressFcn', @(s,e)keypress());
hedit = uicontrol('Style', 'edit');
function keypress()
if ~isequal(gco, hedit)
disp('Window Key Press')
end
end
Wenn auf der anderen Seite Sie keine globale Tastendruck Rückruf (mit WindowKeyPressFcn
) festgelegt haben und Sie setzen stattdessen die KeyPressFcn
jedes uicontrol
einzeln, nur eine andere Angabe (oder keine) KeyPressFcn
für das Bearbeitungsfeld würde funktionieren.
Vielen Dank, es hat funktioniert! Meine Tastenrückrufe waren global. –