Sto generando una GUI di MATLAB usando GUIDE, ma voglio creare campi quando un utente fa clic su un pulsante. C'è un modo per aggiungere dinamicamente nuovi oggetti GUI nei callback?Aggiungere dinamicamente i campi alla GUI di MATLAB?
risposta
Un modo per ottenere ciò è creare gli oggetti della GUI all'inizio, ma impostare la proprietà "Visibility" su "off". Quindi, quando l'utente fa clic su un pulsante, si imposta la proprietà "Visibilità" su "on". In questo modo, non creerai nuovi oggetti GUI mentre la GUI è in esecuzione, cambieresti semplicemente quali parti sono visibili o meno.
EDIT: Se non sai quante nuova interfaccia grafica oggetti necessari fino a run-time, questo è come si dovrebbe aggiungere i nuovi oggetti GUI alla struttura maniglie (dove hFigure è un handle per la figura GUI):
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
si sarebbe poi, naturalmente, hanno a scrivere la funzione di callback per il nuovo oggetto GUI (se ha bisogno di uno), che potrebbe essere simile a questa:
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
Le funzioni di interesse che ho utilizzato nel codice precedente sono: GUIDATA (per la memorizzazione/il recupero dei dati per una GUI) e GCBF (ottenere l'handle della figura genitore dell'oggetto la cui richiamata è attualmente in esecuzione).
Utilizzando UICONTROL, è possibile aggiungere "campi" (chiamati uicontrols o widget).
Si vuole specificare lo stile per ottenere caselle di modifica, pulsanti, ecc ...
Si può effettivamente desidera avere tutti i widget già lì a guidare e poi basta cambiare il visibilità o abilitati proprietà secondo necessità.
È possibile trovare i miei video tutorial sulla costruzione GUI in MATLAB qui: http://blogs.mathworks.com/videos/category/gui-or-guide/
Questo dovrebbe coprire questo e molti argomenti sono riportate nella costruzione di GUI.
Posso aggiungere l'oggetto uicontrol creato agli handle che vengono generati? Qualcosa di simile al set (handle.test, uicontrol_element) – victor
quando fai l'UICONTROL, acquisisci l'handle: handles.newWidget = uicontrol (.......) – MatlabDoug
- 1. GUI Matlab che utilizzano GUIDA: desidera aggiornare dinamicamente i grafici
- 2. Aggiungere campi di input dinamicamente con wtforms
- 3. Aggiungere dinamicamente i campi nelle rotaie con gli attributi nidificati
- 4. Aggiungere dinamicamente i campi modulo al modulo django
- 5. Aggiungere dinamicamente campi al modulo rasoio
- 6. Aggiungere dinamicamente alla fine di RelativeLayout
- 7. Aggiorna dinamicamente i campi di configurazione Grunt
- 8. aggiungere dinamicamente i grafici alla pagina Web utilizzando lo splendente
- 9. Convalida tutti i campi nella GUI Swing
- 10. Come posso aggiungere dinamicamente campi di input a un modulo?
- 11. Aggiungere dinamicamente le proprietà alla classe C#
- 12. aggiungere dinamicamente css alla pagina tramite javascript
- 13. Variabili globali nella GUI MATLAB?
- 14. Come lavorare con i campi creati dinamicamente?
- 15. Creazione di classi dinamicamente in matlab
- 16. Come visualizzare una griglia di immagini scorrevole nella GUI MATLAB
- 17. Responsive GUI MATLAB senza chiamare drawNow() direttamente
- 18. BootstrapValidator, convalida i campi aggiunti dinamicamente al modulo
- 19. GUI per la mappatura dei campi CSV
- 20. Come aggiungere onclicklistener alla visualizzazione del testo generata dinamicamente?
- 21. MATLAB: GUI progressivamente sempre più lenta
- 22. Aggiungere i controlli dinamicamente in FlowLayoutPanel
- 23. Come aggiungere dinamicamente un differimento alla promessa da questo jsFiddle?
- 24. Aggiungere una vista dinamicamente alla voce del RecyclerView
- 25. Come aggiungere dinamicamente una riga alla tabella html
- 26. Come nascondi dinamicamente i campi del modulo in Django?
- 27. Come aggiungere dinamicamente l'operatore O alla clausola WHERE in LINQ
- 28. Logstash filtro Grok - campi di nome dinamicamente
- 29. Come posso programmare una GUI in MATLAB?
- 30. Django imposta i valori dei campi dinamicamente in base ad altri campi
Il problema è che non so quanti ne ho Dovrò creare fino al runtime. Posso farlo modificando le maniglie gui create? Sto cercando di fare: p = uicontrols (figura, 'Style', 'pulsante', 'String', 'test') set (handles.test = p) ma mi sta dando errori. C'è un altro modo? – victor
il comando set elencato sopra è un problema. Cosa stai cercando di ottenere? – MatlabDoug
Va bene, sto provando la modifica di gnovice, e per qualche motivo quando lo eseguo in un callback generato da una guida, finisce per cambiare un elemento esistente. Il mio codice: new_t = UIControl (hObject, 'Style', 'Modifica') allora provo: K >> get (new_t, 'Style') ans = pulsante E 'strano perché insieme (handles.test, 'Stile', 'modifica') finisce per cambiare handle.pushbutton.Style. Qualche idea? – victor