Ich habe drei GUIs in MATLAB. Das Etikett von jedem von ihnen ist 'P0'
, 'P1'
und 'P2'
. Ich möchte die Handles aller drei GUIs in einer Struktur setzen und in der Lage sein, von einer der drei GUIs zu dieser Struktur zu gelangen und die darin enthaltenen Werte zu aktualisieren. Was ist der beste Weg, dies zu erreichen?Struktur der Griffe von GUIs MATLAB
Antwort
Sie haben ein paar Möglichkeiten, wie Sie dies tun können. Eine Möglichkeit wäre, das Root-Grafikobjekt zusammen mit setappdata
und getappdata
zum Speichern und Abrufen von Werten zu verwenden.
fig0 = findall(0, 'tag', 'P0');
fig1 = findall(0, 'tag', 'P1');
fig2 = findall(0, 'tag', 'P2');
% Combine the GUIdata into a single struct
handles.P0 = guidata(fig0);
handles.P1 = guidata(fig1);
handles.P2 = guidata(fig2);
% Store this struct in the root object where ALL GUIs can access it
setappdata(0, 'myappdata', handles);
Dann aus Ihrem Rückruf, dann würden Sie einfach diese Struktur holen und es verwenden, um direkt
function mycallback(hObject, evnt, ~)
% Ignore the handles that is passed in and use your own
handles = getappdata(0, 'myappdata');
% Now if you modify it, you MUST save it again
handles.P0.value = 1;
setappdata(0, 'myappdata', handles)
end
Eine weitere Möglichkeit, eine handle
class zu verwenden ist Ihre Werte zu speichern und dann können Sie speichern eine Referenz zu dieser Handle-Klasse innerhalb der handles
Struktur jeder GUI. Wenn Sie Änderungen an dieser Struktur vornehmen, werden die Änderungen in allen GUIs widergespiegelt.
Eine einfache Möglichkeit, dies zu tun, wäre structobj
zu verwenden (Disclaimer: Ich bin der Entwickler), die jede struct
in ein handle
Objekt konvertieren.
% Create an object that looks like a struct but is a handle class and fill it with the
% handles struct from each GUI
handles = structobj(guidata(fig0));
update(handles, guidata(fig1));
update(handles, guidata(fig2));
% Now store this in the guidata of each figure
guidata([fig0, fig1, fig2], handles)
Da wir eine Sache im guidata
der Figur gespeichert, wird automatisch über den Standard handles
Eingabeargument für Ihren Rückruf übergeben werden. So, jetzt Ihr Rückruf würde in etwa so aussehen:
function mycallback(hObject, evnt, handles)
% Access the data you had stored
old_thing = handles.your_thing;
% Update the value (changes will propagate across ALL GUIs)
handles.your_thing = 2;
end
Der Vorteil dieses Ansatzes besteht darin, dass Sie mehrere Instanzen Ihrer drei GUIs laufen zur gleichen Zeit und die Daten miteinander nicht stört haben können.
Vielen Dank – chsafouane
- 1. Der effizienteste Weg, mehrere GUIs in Matlab aufzurufen
- 2. R entspricht der MATLAB-Struktur?
- 3. Ändern der Größe von Panels in GUIs ohne Änderung der Größe des Inhalts (MATLAB)
- 4. Beziehung zwischen Haupt GUIs und Unter GUIs
- 5. MATLAB-Struktur Umwandlung Fehler
- 6. Wie bekomme ich die Griffe aller offenen Zahlen in MATLAB
- 7. Feldwerte der Struktur ändern! <Matlab>
- 8. Griffe von EditText sind unterstrichen
- 9. Android TDD von komplexen GUIs
- 10. polymorphe Griffe
- 11. Matlab dir zeigt leere Struktur
- 12. Verbindung zwischen mehreren GUIs
- 13. Funktion an Matlab-Struktur anhängen
- 14. Transformation equal-Funktion zu anderen gleichen Funktion Griffe Griffe
- 15. Effect nicht auf Guis
- 16. HighChart: Navigator Griffe sind auf der Tooltip
- 17. Windows GUIs für Git
- 18. Wie werden GUIs gezeichnet?
- 19. Funktion Griffe in Octave
- 20. C# Get Liste der Griffe, AcessViolationException
- 21. Teilen gute Beispiele von Web-GUIs
- 22. Struktur zuweisen zu einem Struktur-Array in MATLAB
- 23. Einschränkungen der Verwendung von GLFW und OpenGL für GUIs
- 24. Was macht Griffe?
- 25. 2 "parallele" wxpython GUIs möglich?
- 26. Breaking Event Cycles in GUIs
- 27. Convert Struktur in Double-Typ in Matlab
- 28. Eine Matlab-Struktur-ähnliche in R
- 29. Wie sortiere ich Struktur-Arrays in MATLAB?
- 30. Konstruieren Sie eine Struktur von textscan Ausgabe in MATLAB
Haben Sie 'getappdata' und' setappdata' angeschaut? – Matt
Es kann sich lohnen, eine 'handle'-Klasse zu erstellen, in der Sie Ihre Daten speichern, und dann können Sie ein Handle mit' guidata' speichern und von einer der beiden GUI ändern. – Suever