2009-07-07 11 views

Odpowiedz

6

Jednym ze sposobów osiągnięcia tego jest utworzenie obiektów GUI na początku, ale ustawienie ich właściwości "Widoczność" na "wyłączone". Następnie, gdy użytkownik kliknie przycisk, ustawiasz właściwość "Widoczność" z powrotem na "włączony". W ten sposób nie będziesz tworzyć nowych obiektów GUI, podczas gdy GUI jest uruchomiony, po prostu zmieniasz, które części są widoczne, czy nie.

EDIT: Jeśli nie wiesz, jak wiele nowych obiektów GUI trzeba aż okresie czasu, to w jaki sposób dodawać nowe obiekty GUI do struktury uchwyty (gdzie hFigure jest uchwyt do GUI rysunek):

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 

byś wtedy oczywiście trzeba napisać funkcję zwrotną dla nowego obiektu GUI (jeśli potrzebuje jeden), co może wyglądać następująco:

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 

Funkcje zainteresowań, których użyłem w powyższym kodzie, to: GUIDATA (do przechowywania/pobierania danych dla GUI) i GCBF (uzyskanie uchwytu macierzystej figury obiektu, którego wywołanie zwrotne jest aktualnie wykonywane).

+0

Problem polega na tym, że nie wiem ilu " Będę musiał utworzyć do czasu wykonania. Czy mogę to zrobić zmieniając utworzone uchwyty GUI? Próbuję zrobić: p = uicontrols (rysunek, "styl", "przycisk", "ciąg", "test") zestaw (handles.test = p) ale daje mi błędy. Czy istnieje inny sposób? – victor

+0

Polecenie set wymienione powyżej jest problemem. Co chcesz z tym zrobić? – MatlabDoug

+0

Dobrze, próbuję edytować gnovice, i z jakiegoś powodu, kiedy uruchamiam to w wywołaniu zwrotnym generowanym przez przewodnik, kończy się zmiana istniejącego elementu. Mój kod: new_t = uicontrol (hObject, 'styl', 'edit') potem spróbować: K >> dostać (new_t, 'styl') ans = przycisk To dziwne, bo zestaw (handles.test, 'Style', 'edit') kończy się zmienianiem uchwytów.pushbutton.Style. Jakieś pomysły? – victor

3

Korzystając z UICONTROL, będziesz mógł dodawać "pola" (zwane uicontrols lub widgets).

Będziemy chcieli, aby określić styl, aby edytować pola, guziki itp ...

może rzeczywiście chcesz mieć wszystkie widżety już istnieje w podręczniku, a potem po prostu zmienić widoczność lub włączoną Właściwość w razie potrzeby.

można znaleźć moje samouczki wideo na temat budowy GUI w MATLAB tutaj: http://blogs.mathworks.com/videos/category/gui-or-guide/

ta powinna obejmować tego i innych tematów w GUI budynku.

+0

Czy mogę dodać utworzony obiekt uicontrol do generowanych uchwytów? Coś jak zestaw (handles.test, uicontrol_element) – victor

+0

kiedy robisz UICONTROL, uchwyć uchwyt: handles.newWidget = uicontrol (.......) – MatlabDoug

Powiązane problemy