Normalerweise bevorzuge ich die Erstellung einer spezifischen reset_gui
-Funktion für meine GUIs, die alle relevanten Steuerelementeigenschaften (wie Kontrollkästchenstatus, Zeichenfolgen in bearbeitbaren Textfeldern usw.) auf die entsprechenden Standardwerte zurücksetzt sowie alle relevanten Variablenwerte setzt auf die Standardwerte, Clearing-Plots, etc ..
Wenn Sie eine generische Option zum Zurücksetzen aller UI-Steuerungseigenschaften in ihren Ausgangszustand bevorzugen würden, hier ist ein Beispiel für eine mögliche Lösung:
function example_reset_gui
% Initialize GUI:
hFigure = figure();
uicontrol('Style', 'edit', 'Position', [20 100 100 25]);
uicontrol('Style', 'edit', 'Position', [20 65 100 25]);
uicontrol('Style', 'push', 'Position', [20 20 60 30], ...
'String', 'Reset', 'Callback', @reset_fcn);
drawnow
% Collect default states:
[defaultState{1:3}] = get_default_state(hFigure);
% Nested reset function:
function reset_fcn(~, ~)
set(defaultState{:});
end
end
% Local function:
function [hArray, propArray, valueArray] = get_default_state(hFigure)
hArray = findall(hFigure, 'Type', 'uicontrol');
propArray = fieldnames(set(hArray(1)));
valueArray = get(hArray, propArray);
end
Dies schafft eine Figur mit 2 editierbaren Textfeldern und einem Reset-Knopf. Sie können eingeben, was Sie wollen, in die Textfelder, und wenn Sie die Reset-Taste drücken, wird es sie löschen (d. H., Sie auf die leere Standardzeichenfolge setzen, die sie zuerst enthalten).
Die local functionget_default_state
werden alle uicontrol
Objekte in der Figur finden, dann alle ihre set
-able Eigenschaften erhalten (das heißt alle Eigenschaften, die nicht schreibgeschützt sind), dann get alle Anfangswerte für diese Eigenschaften. Die drei Ausgänge sind in dem 1-mal-3-Zellen-Array defaultState
gespeichert, auf das über die nested functionreset_fcn
zugegriffen werden kann. Wenn die Reset-Taste gedrückt wird, werden alle set
-fähigen UI-Steuerelementeigenschaften auf die Werte gesetzt, die sie bei der ersten Erstellung hatten.
Es sollte beachtet werden, dass alle Änderungen an der Position
property (z. B. aufgrund der Größenanpassung der Abbildung) durch diesen Ansatz rückgängig gemacht werden können. Mit 'normalized'
units würde dies vermeiden.
Was erwarten Sie von der 'case' Anweisung? "case" sollte nur innerhalb eines 'switch'-Blocks existieren, und selbst dann möchten Sie den Callback-Code in Ihrer definierten' MyFunction' Callback-Funktion haben. – Wolfie
ja ich erstelle meine Funktion, definiere eine Schaltfläche und einige Plot mit Schalter und am Ende möchte ich die Schnittstelle zurücksetzen –
Es ist unmöglich, Ihr Problem mit dem Code zu diagnostizieren, den Sie bereitgestellt haben. Wenn das alles Ihr Code ist, dann ist es mehr falsch als richtig. Wenn dies eine Teilmenge Ihres Codes ist, buchen Sie den Rest des relevanten Codes. Stellen Sie die Frage klarer oder erwarten Sie, dass sie unbeantwortet bleibt/geschlossen wird. – Wolfie