2009-07-07 9 views

risposta

6

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).

+0

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

+0

il comando set elencato sopra è un problema. Cosa stai cercando di ottenere? – MatlabDoug

+0

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

3

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.

+0

Posso aggiungere l'oggetto uicontrol creato agli handle che vengono generati? Qualcosa di simile al set (handle.test, uicontrol_element) – victor

+0

quando fai l'UICONTROL, acquisisci l'handle: handles.newWidget = uicontrol (.......) – MatlabDoug

Problemi correlati