I due pannelli possono condividere un uicontrol in una GUI Matlab?
-
13-12-2019 - |
Domanda
Ho una GUI Matlab che ha diversi aspetti della funzionalità, ognuno con il proprio pannello di uicontrols.Quando è selezionato un pannello, l'altro è impostato su invisibile e viceversa.Tuttavia, condividono alcuni degli stessi ingressi sotto forma di un menu popup.Posso includere un'istanza "clone" del menu sul secondo pannello in qualche modo?Mi piacerebbe evitare il maggior numero possibile di callback ridondanti e uicontroli.
Soluzione
Immagino se l'uicontrol fosse un figlio diretto della figura, potresti essere in grado di metterlo davanti a tutto.
Una soluzione molto più semplice è utilizzare la stessa callback per più uicontrols. Nell'editor delle proprietà, è possibile modificare il nome del callback e impostarlo su una funzione di callback comune. Inoltre, è possibile creare un campo (ad esempio myPopupH
) nel OpeningFcn
della GUI, in cui si memorizzano le maniglie dei popup che devono comportarsi allo stesso modo. Quindi, nel callback, useresti hObject
, ovvero il primo argomento di input, per tutte le chiamate get
(per accedere allo stato modificato del menu popup), ma useresti handles.myPopupH
in tutte le chiamate set
, in modo che È possibile assicurarsi che entrambi i popup abbiano sempre lo stesso stato. Pertanto, l'oggetto UI può essere ridondante, ma tutto il codice (che è molto più critico) esiste solo in una singola copia.
Un luogo in cui utilizzo regolarmente una singola richiamata per più elementi UI è la funzione di richiesta a cui è possibile accedere dal punto di riferimento "Annulla" e dal "X" che chiude la figura, e possibilmente da uno dei "File" Articoli -Menu.