Wstęp
Sprawy techniczne
GUIDE
Kontrolki
Przykłady
GUI bez GUIDE
Trochę o kompilacji
Linki
 

Tworzenie GUI bez GUIDE



          W tym tutorialu skupiliśmy się na tworzeniu GUI z wykorzystaniem nakładki GUIDE. Jednak możliwe jest tworzenie GUI bez GUIDE, wyłącznie przy użyciu plików *.m. Metoda ta sprowadza się do ręcznego tworzenia, opisywania i programowania każdego elementu. Metoda ta ma swoje plusy (np. możliwość takiego zaprogramowania GUI aby pasowało do różnych rozdzielczości ekranu) ale również minusy (bardziej czasochłonna, mało dokumentacji).

          Poniżej przedstawimy tylko prosty przykład aby pokazać, że takie tworzenie GUI również jest możliwe. Zainteresowanych zachęcamy do poszukiwań, w sieci na pewno się coś znajdzie na ten temat :)

          Przykładowy program składa się z 2 plików. Pierwszy z nich jest odpowiedzialny za stworzenie okna (figure) i dodanie do niego kontrolek (wykres i suwak):

noguide.m

function nogiude

% zadeklarowanie zmiennych globalnych

global t omega 

% zadanie wartości początkowych zmiennym globalnym

t=[0:0.001:2*pi]; 
omega=4;

% utworzenie okna graficznego i ustalenie jego właściwości

h = figure('Units','normalized', ...
           'Tag', 'noguide', ...
           'Name', 'Przyklad GUI bez GUIDE', ...
           'NumberTitle', 'off', ...
           'ToolBar','none', ...
           'MenuBar','none' );
         
%narysowanie wykresu w oknie         

s = subplot(1,1,1);
plot(t,sin(omega*t))

% utworzenie suwaka i ustalenie jego właściwości

slider = uicontrol('Parent', h, ...
    		   'Units', 'normalized', ...
		   'Position', [ 0.1 0.02 0.8 0.03 ], ...
		   'Callback', 'slider_callback', ...
		   'Style', 'slider', ...
                   'Min', 0, ...
                   'Max', 10, ...
                   'Value', 4, ...
		   'Tag', 'par_slider' );


Drugi z plików dodaje obsługę funkcji Callback suwaka:

slider_callback.m

function slider_callback;
 global t omega
 
 % pobranie wartości 'Value' z obiektu zglaszajacego wywolanie funkcji

  omega = get(gcbo, 'Value' );
 
 % narysowanie wykresu
 
 s=subplot(1,1,1);
  plot(t,sin(omega*t))


W celu uruchomieni programu wystarczy w matlabie uruchomić plik nogiude.m. A oto efekt:


Jak widać program działa, powstało GUI bez użycia GUIDE.