MATLAB poskytuje nástroj guide
, který je schopen vygenerovat základní GUI prvky. Je vygenerován soubor fig
rerezentující GUI a m-file
s odpovídající funkcionalitou. V novějších verzích MATLABu je navíc k dispozici app designer. GUI lze vytvářet i programově (za běhu).
guide
a vybereme Blank GUI
(defaultní). Do GUI přidáme dva edit boxy, textbox, a pushbutton. GUI uložíme jako test.fig
.
V editoru vygenerovaného kódu použijeme tlačítko funkce (modré F) popřípadě kontextovou nabídku (novější verze MATLABu, položka View Callbacks) pro nalezení příslušné obslužné funkce při stisku tlačítka a doplníme následující kód.
a = str2double(get(handles.edit1,'String'));
b = str2double(get(handles.edit2,'String'));
set(handles.text1,'String', num2str(a+b));
Program spustíme klasickým způsobem nebo zavoláním příkazu test
(název GUI).
uicontrol
objektPředstavuje hlavní objekt GUI. Většina vlastností je shodná pro všechny prvky GUI (např. position, units, tag, visible, parent, style, callback), jednotlivé prvky GUI mají navíc dodatečné (specifické) vlastnosti.
function tab
% x a y souradnice leveho dolniho rohu okna, sirka a vyska okna
f = figure('Position', [200 200 500 250]);
% data pro tabulku
data = [ magic(5); magic(5)];
data = [data, sum(data, 2)];
% umistime tabulku
t = uitable('Parent', f, 'Position', [5 5 490 240], 'Data', data);
% upravime vlastnosti tabulky
set(t,'ColumnName', {'#','col 1','col 2','col 3','col 4','sum'});
columneditable = [true true false false false false];
set(t,'ColumnEditable', columneditable);
% nastavime callback
set(t, 'CellEditCallback', @update);
% update callback pro tabulku
function update(o, e)
data = get(o, 'data');
if isnumeric(e.NewData)
data(e.Indices(1), end) = sum(data(e.Indices(1),1:end-1));
else
data(e.Indices(1), e.Indices(2)) = e.PreviousData;
%error('Zadana mohou byt pouze cisla');
end
set(o, 'data', data);
end
end
iteraci = 10;
bar = waitbar(0, 'Please wait...', 'Name', 'Computation...');
for i = 1:iteraci
pause(0.5)
waitbar(i/10, bar, sprintf('Progress: %d/%d', i, iteraci));
end
close(bar);
Vytvořte umělý skript, který zobrazí dialogové okno obsahující selectbox a po výběru a potvrzení volby bude pokračovat s vybranou hodnotou.
Příkazem load hospital
načtěte vstupní data (data jsou v dataset
formatu). Data analyzujte (poslední sloupec ingnorujte) a uložte je v jiné reprezentaci do jiného souboru. Vytvořte GUI aplikaci (tabulkova), která bude umožňovat načítání, editaci a ukládání těchto dat (včetně přidání nového záznamu).
© Martin Trnečka