Ich erzeuge eine MATLAB GUI mit GUIDE, aber ich möchte Felder erstellen, wenn ein Benutzer auf eine Schaltfläche klickt. Gibt es eine Möglichkeit, neue GUI-Objekte in den Callbacks dynamisch hinzuzufügen?Felder dynamisch zur MATLAB GUI hinzufügen?
Antwort
Eine Möglichkeit, dies zu erreichen, besteht darin, die GUI-Objekte am Anfang zu erstellen, aber ihre Eigenschaft "Visibility" auf "off" zu setzen. Wenn der Benutzer dann auf eine Schaltfläche klickt, setzen Sie die Eigenschaft "Sichtbarkeit" wieder auf "on". Auf diese Weise werden Sie keine neuen GUI-Objekte erstellen, während die GUI läuft, Sie würden einfach ändern, welche Teile davon sichtbar sind oder nicht.
EDIT: Wenn Sie nicht wissen, wie viele neue GUI Objekte, die Sie bis zur Laufzeit benötigen, ist dies, wie Sie die neuen GUI-Objekte auf die Griffe Struktur hinzufügen würde (wo hFigure ist ein Handle auf die GUI Abbildung):
p = uicontrol(hFigure,'Style','pushbutton','String','test',...
'Callback',@p_Callback); % Including callback, if needed
handles.test = p; % Add p to the "test" field of the handles structure
guidata(hFigure,handles); % Add the new handles structure to the figure
Sie würden dann natürlich haben die Callback-Funktion für das neue GUI-Objekt zu schreiben (wenn es eins) benötigt, die wie folgt aussehen könnte:
function p_Callback(hObject,eventdata)
handles = guidata(gcbf); % This gets the handles structure from the figure
...
(make whatever computations/changes to GUI are needed)
...
guidata(gcbf,handles); % This is needed if the handles structure is modified
Interessante Funktionen, die ich in dem obigen Code verwendet habe, sind: GUIDATA (zum Speichern/Abrufen von Daten für eine GUI) und GCBF (Handle der Elternfigur des Objekts, dessen Callback gerade ausgeführt wird).
Mit UICONTROL können Sie 'Felder' (sogenannte uicontrols oder Widgets) hinzufügen.
Sie wollen den Stil festlegen Editboxen zu erhalten, Knöpfe, etc ...
Vielleicht möchten Sie eigentlich schon da alle Widgets haben, in GUIDE und dann ändern Sie einfach den Sichtbarkeit oder aktiviert Eigenschaft nach Bedarf.
Sie können meine Video-Tutorials auf GUI-Gebäude in MATLAB finden Sie hier: http://blogs.mathworks.com/videos/category/gui-or-guide/
Dies diese und viele verwandte Themen in GUI Gebäude abdecken sollte.
Kann ich das erstellte uicontrol-Objekt den Handles hinzufügen, die generiert werden? So etwas wie set (handles.test, uicontrol_element) – victor
Wenn Sie die UICONTROL machen, erfassen Sie den Griff: handles.newWidget = uicontrol (.......) – MatlabDoug
- 1. Wie Bild in MATLAB GUI hinzufügen?
- 2. Dynamisch MySQL-Felder in Laravel hinzufügen 5.2
- 3. TextView dynamisch zur Aktivität hinzufügen
- 4. MATLAB GUI Standardwerte setzen
- 5. Python: Felder dynamisch zu Objekten hinzufügen
- 6. Qt-GUI dynamisch manipulieren
- 7. SQL - Felder zur Abfrage hinzufügen, um von
- 8. Dynamische Felder zur Spring JSON-Ansichtsantwort hinzufügen
- 9. Hinzufügen zusätzlicher Felder zur lokalen Passport.js-Strategie
- 10. Matlab checkbox gui
- 11. Werte dynamisch zur Arraylist von userinput hinzufügen
- 12. Dynamisch ein Servlet zur ServletConfig hinzufügen
- 13. Kann man dynamisch Abschnitte zu einem Matlab Publish Skript hinzufügen?
- 14. Pausing Matlab Programm für GUI
- 15. Umriss Text in Matlab Gui
- 16. Einen MATLAB GUI Callback stoppen
- 17. Matlab GUI, brauchen behandelt Objekt
- 18. Globale Variablen in MATLAB GUI?
- 19. Sound Sample Player zur GUI hinzufügen: visual bug
- 20. django - Felder django Form dynamisch hinzufügen und Benutzereingaben
- 21. Matlab: zur variablen, nicht Variablenwert
- 22. dynamisch Felder in einem formset
- 23. Wie können Sie dynamisch mehr Tabs zu einer Tabgruppe in Matlab hinzufügen?
- 24. Matlab: Zählen Bild in einem Ordner mit Matlab GUI
- 25. dynamisch Felder hinzufügen zu modellieren (oder einige Felder in einer separaten Klasse speichern)
- 26. GUI zur Verwaltung von Redis
- 27. Validieren Sie alle Felder in Swing GUI
- 28. Zeile hinzufügen dynamisch
- 29. MATLAB effizient dynamisch expandierendes Primitiv
- 30. MATLAB GUI mit GUIDE: Listenfeld Ausgabe
Das Problem ist, ich weiß nicht, wie viele ich ' Ich muss bis zur Laufzeit erstellen. Kann ich das tun, indem ich die erstellten Gui-Griffe verändere? Ich versuche zu tun: p = uicontrols (Abbildung, 'Stil', 'Drucktaste', 'String', 'Test') Set (handles.test = p) aber es gibt mir Fehler. Gibt es eine andere Art und Weise? – victor
Der oben genannte Set-Befehl ist ein Problem. Was versuchst du damit zu erreichen? – MatlabDoug
Okay, ich versuche gnovice's edit, und aus irgendeinem Grund, wenn ich das in einem Callback starte, das von guide generiert wird, wird ein existierendes Element geändert. Mein Code: new_t = uicontrol (hObject, 'Style', 'Bearbeiten') dann versuche ich: K >> erhalten (new_t, 'Style') ans = Taster Es ist seltsam, weil Set (handles.test, 'Style', 'edit') endet mit dem Ändern von handles.pushbutton.Style. Irgendwelche Ideen? – victor