Come trasferire oggetti GUI (pulsanti, cursori, elenchi, ecc.) Avanti e indietro tra 2 cifre, mantenendo la loro funzionalità (callback e interazioni)? In altre parole, trasferisci tutti gli oggetti dalla figura 1 alla figura 2 e chiedi loro di eseguire i loro script come nella figura 1.Oggetti della GUI di ri-parenting
5
A
risposta
1
Il trucco qui è di gestire il modo in cui si impostano i controlli e i callback e di utilizzare l'interruttore legacy in copyobj come "un"documented here
l'esempio seguente consente di Reparent un copia di tutti gli oggetti di figura di capire - mi rendo conto che non è "trasferimento", ma la copia -> ma tutti funzionano ancora indipendentemente ...
function test_reparentObjects
% Create a new figure
f1 = figure ('Name', 'Original Figure');
% Create some objects - make sure they ALL have UNIQUE tags - this is important!!
axes ('parent', f1, 'tag', 'ax');
uicontrol ('style', 'pushbutton', 'position', [0 0 100 25], 'string', 'plot', 'parent', f1, 'callback', {@pb_cb}, 'tag', 'pb');
uicontrol ('style', 'pushbutton', 'position', [100 0 100 25], 'string', 'reparent', 'parent', f1, 'callback', {@reparent}, 'tag', 'reparent');
uicontrol ('style', 'text', 'position', [300 0 100 25], 'string', 'no peaks', 'parent', f1, 'tag', 'txt');
uicontrol ('style', 'edit', 'position', [400 0 100 25], 'string', '50', 'parent', f1, 'callback', {@pb_cb}, 'tag', 'edit');
end
function pb_cb(obj,event)
% This is a callback for the plot button being pushed
% find the parent figure
h = ancestor (obj, 'figure');
% from the figure find the axes and the edit box
ax = findobj (h, 'tag', 'ax');
edt = findobj (h, 'tag', 'edit');
% convert the string to a double
nPeaks = str2double (get (edt, 'string'));
% do the plotting
cla(ax)
[X,Y,Z] = peaks(nPeaks);
surf(X,Y,Z);
end
function reparent(obj,event)
% This is a callback for reparenting all the objects
currentParent = ancestor (obj, 'figure');
% copy all the objects -> using the "legacy" switch (r2014b onwards)
% this ensures that all callbacks are retained
children = copyobj (currentParent.Children, currentParent, 'legacy');
% create a new figure
f = figure ('Name', sprintf ('Copy of %s', currentParent.Name));
% reparent all the objects that have been copied
for ii=1:length(children)
children(ii).Parent = f;
end
end
Problemi correlati
- 1. Alternative della GUI Java
- 2. Test della GUI AIR
- 3. Consigli architetturali sull'implementazione della logica della GUI
- 4. domanda di progettazione orientata agli oggetti per l'applicazione GUI
- 5. Aggiunta della propria GUI in Paraview
- 6. Come cambiare lo stile della GUI delphi?
- 7. Introduzione alla programmazione della GUI con c
- 8. Cambia la larghezza della scheda GUI VIM
- 9. Aggiornamento della GUI dall'operatore in background
- 10. Componente della GUI del selettore della data per Java Swing
- 11. GUI di Xdebug trace?
- 12. Sistema GUI per three.js
- 13. Riattivazione delle proprietà della GUI di sola lettura in ViewModel
- 14. Dove posso trovare lo standard della GUI di Windows?
- 15. Framework di test della GUI per JavaFX 2
- 16. Creazione dinamica della GUI utilizzando i file di configurazione
- 17. Confronto degli strumenti di sviluppo della GUI per linux
- 18. Un sacco di controlli della GUI che indicano stati diversi
- 19. Framework di test della GUI automatizzata per Android
- 20. Automatizzare le operazioni della GUI di Windows con Python
- 21. Come posso forzare la visualizzazione della GUI di mergetool (kdiff3)?
- 22. DI: gestione della vita di oggetti idisposti
- 23. Scala, GUI e immutabilità
- 24. Esempio di GUI Mediatore C++
- 25. C# Tracking di oggetti della telecamera
- 26. JavaFx - GUI di aggiornamento
- 27. Throttling aggiornamenti gui javafx
- 28. Esecuzione di un'applicazione GUI su Linux, senza mostrare la GUI?
- 29. Qt GUI applicazione matematica si blocca GUI durante il calcolo
- 30. GUI Python Object Inspector
Utilizzare la proprietà 'Parent' di uicontrols:' s et (your_object_Handle, 'Parent', destination_figure_handle) '. Se hanno bisogno di prendere i dati dalla nuova figura per eseguire lo script/la funzione, dovrai fare attenzione a scegliere i dati giusti. – Hoki