SlideShare uma empresa Scribd logo
1 de 5
Baixar para ler offline
ch−¬ng 3: Giao diÖn ®å ho¹ GUI
§1. Kh¸i niÖm chung
§Ó tiÖn dông ta cã thÓ t¹o nªn giao diÖn ®å ho¹(GUI - Graphic User Interface) gi÷a
ng−êi dïng vµ MATLAB. Trong giao diÖn nµy ta cã thÓ xuÊt d÷ liÖu d−íi 2 d¹ng: v¨n b¶n vµ
®ß ho¹. Mçi mét GUI cã mét hay nhiÒu layout(diÖn m¹o). §Ó t¹o ra vµ xö lÝ layout ciña GUI
ta nhËp lÖn guide vµ nhËn ®−îc mét layout rçng vµ cöa sæ Guide Control Panel. ViÖc t¹o
GUI t¹o nªn mét c«ng cô ®å ho¹ phôc vô nhËp xuÊt d÷ liÖu mét c¸ch trùc gi¸c, rÊt thuËn
tiÖn. Ngoµi ra cã thÓ dïng GUI ®Ó gi¸m s¸t c¸c qu¸ tr×nh, hiÓn thÞ c¸c ®èi t−îng.
§2. nhËp xuÊt kÝ tù, sè liÖu ra GUI
1. T¹o khung h×nh: Ta xÐt c¸c lÖnh sau:
f = input('Enter temperature(degree K): ');
c = (f - 32)*5/9;
fprintf(1,'Temperature(degree C) is: %gn',c)
Ba dßng lÖnh trªn thùc hiÖn c¸c c«ng viÖc sau:
- nhËp gi¸ trÞ ®Çu vµo
- thùc hiÖn phÐp tÝnh quy ®æi nhiÖt ®é
- xuÊt kÕt qu¶ ra mµn h×nh
B©y giê ta t×m c¸ch cµi c¸c dßng lÖnh trªn sao cho chóng thùc hiÖn trªn khu«n khæ mét
khung ®å ho¹ nµo ®ã. §Ó t¹o hai khung h×nh ch÷ nhËt trong cöa sæ Figure hiÖn hµnh víi nÒn
mµu x¸m ta nhËp vµo c¸c lÖnh sau:
set(gcf,'DefaultUicontrolUnit','Normalized')
frame1_ = uicontrol(gcf,'Style','Frame','Position',[0.1 0.1 0.8 0.3]);
frame2_ = uicontrol(gcf,'Style','Frame','Position',[0.1 0.6 0.8 0.3]);
set(frame1_,'BackgroundColor',[0.5 0.5 0.5]);
set(frame2_,'BackgroundColor',[0.5 0.5 0.5]);
Hai khung (Frames) cã to¹ ®é c¸c gãc d−íi tr¸i lµ (0.1, 0.1) vµ (0.1, 0.6), cïng chiÒu cao 0.3
®¬n vÞ vµ bÒ réng 0.8 ®¬n vÞ. §¬n vÞ ®−îc t×nh b»ng % cña kÝch c÷ ngoµi cña Figure. VËy ta
cã thÓ diÔn gi¶i nh− sau:
- Khung thø nhÊt cèÝgc tr¸i d−íi t¹i ®iÓm cã to¹ ®é 10% chiÒu ngang vµ 10% chiÒu
cao cña khung ngoµi Figure.
- Khung thø 2 cã gãc tr¸i phÝa d−íi t¹i ®iÓm cã to¹ ®ä øng víi 10% chiÒu ngang vµ
60% chiÒu cao cña khung ngo×a Figure.
- C¶ hai khung cã chiÒu cao b»ng 30% chiÒu cao vµ bÒ ngang b»ng 80% bÒ ngang cña
khung ngoµi Figure.
2. Dïng lÖnh edit vµ text ®Ó nhËp xu¸t kÝ tù vµ sè liÖu: Trªn ®©y ta ®· dïng lÖnh uicontrol
®Ó t¹o vµ x¸c ®Þnh vÞ trÝ hai khung h×nh. §o¹n lÖnh sau ®©y dïng uicontrol ®Ó viÕt chuçi kÝ tù
“Fahrenheit” lªn khung bªn trªn:
text_f_=uicontrol(gcf,'Style','Text','String','Fahrenheit: ',...
'Position',[0.3 0.7 0.2 0.05],'HorizontalAlignment','Left');
Chuçi kÝ tù “Fahrenhaeit” ®−îc ®Æt vµo ®óng vÞ trÝ dån tr¸i cña « cã Position ghi trong ®o¹n
ch−¬ng tr×nh trªn. §¹on lÖnh sau dïng Edit ®Ó viÕt chuçi kÝ rù “68.0” vµo vÞ trÝ bªn c¹nh cña
“Fahrenheit”. Chuçi kÝ tù cã vÞ trÝ dån ph¶i trong « (Position Box).
edit_f_=uicontrol(gcf,'Style','edit','String','68.0’...
,'Position',[0.6 0.7 0.2
0.05],'HorizontalAlignment','Right,’Callback’,’fc_calc');
Do sö dông edit, chuçi kÝ tù “68.0” lµ chuçi cã thÓ viÕt l¹i ®−îc trùc tiÕp trªn GUI. Sau khi
nhÊn nót trªn, gi¸ trÞ míi viÕt l¹i ®−îc tiÕp nhËn vµ MATLAB sÏ gäi lÖnh viÕt trong phÇn
callback: fc_calc.
Cuèi cïng ta cßn ph¶i dïng uicontrol ®Ó t¹o ta chuçi text, hiÓn thÞ chuçi “Celcius” vµ
“20.0” trong khung bªn d−íi.
text_c1_= uicontrol(gcf,'Style','Text','String','Celcius: ',...
'Position',[0.3 0.3 0.2 0.05],'HorizontalAlignment','Left');
text_c2_= uicontrol(gcf,'Style','Text','String','20.0','Position',...
[0.6 0.3 0.1 0.05],'HorizontalAlignment','Left');
§Ó thuËn tiÖn ta nªn viÕt c¸c lÖnh nµy nµy trong mét file script.
3. Tù ®éng cËp nhËt gi¸ trÞ lªn GUI: §Ó hoµn thiÖn vÝ dô GUI ta thùc hiÖn ch−¬ng tr×nh
víi nhiÖm vô tÝnh quy ®æi tõ ®é K sang ®é C vµ tù ®éng ®iÒn kÕt qu¶ vµo c¸c « bªn ¹ch
chuçi Celcius. §o¹n ch−¬ng tr×nh nµy phôc vô môc ®Ých callback (hoµn tr¶ gi¸ trÞ) ®−îc l−u
vµo file fc_calc.m vµ cã néi dung nh− sau:
f = get(edit_f_,'String');
f = str2num(f);
c = (f-32)*5/9;
c = num2str(c);
set(text_c2_,'String',c);
§o¹n m· trªn nhËn gi¸ trÞ do lÖnh uicontrol “edit” ®äc vµo d−íi d¹ng chuçi (string) vµ sau
®ã:
- biÕn ®æi tõ d¹ng string sang d¹ng sè
- tÝnh quy ®æi tõ nhiÖt ®é fahrenheit sang nhiÖt ®é celcius
- biÕn ®æi tõ sè sang string
- xuÊt kÕt qu¶ d−íi d¹ng string ra GUI nhê text_c2_
§3. nhËp sè liÖu tõ thanh tr−ît
Ngo×a c¸ch nhËp sè liÖu tõ bµn phÝm, ta cã thÓ nhËp sè liÖu tõ thanh tr−ît. MATLAB
chØ hç trù c¸c thanh tr−ît n»m ngang chø kh«ng hç trî c¸c thanh tr−ît th¼ng ®øng. §Ó t¹o
thanh tr−ît ta dïng lÖnh:
slider_f_ = uicontrol(gcf,'Style','Slider','Min',...
32.0,'Max',212.0,'Value',68.0,'Position',[0.6 0.8 0.2 0.05],...
'Callback','fc_slider_f;fc_calc');
Nh− vËy Callback cã thÓ gäi mét chuçi c¸c lÖnh MATLAB, ph©n c¸ch nhau b»ng dÊu chÊm
than hay dÊu phÈy. Chuçi callback gäi fc_silder_f.m:
f = get(slider_f_,'Value');
f = num2str(f);
set(edit_f_,'String',f);
víi t¸c dông nhËp nhiÖt ®é gi÷ t¹i ‘Value’ cña slider_f_ vµo vÞ trÝ bªn c¹nh « chøa chuçi
“Fahrenheit”. Sau ®ã Callback gäi tiÕp fc_calc.m ®Ó tÝnh quy ®æi gi¸ trÞ nhiÖt ®é vµ g¸n vµo
« c¹nh chuçi “Celcius”. Tuy nhiªn ®Ó nhËp ®−îc gi¸ trÞ míi do ng−êi dïng thanh tr−ît g©y
nªn , ta ph¶i thay ®æi l¹i chuçi lÖnh nh− sau:
slider_f_ = uicontrol(gcf,'Style','Slider','Min',...
32.0,'Max',212.0,'Value',68.0,'Position',[0.6 0.8 0.2 0.05],...
'Callback','fc_edit_f, fc_calc');
Trong ®ã file fc_edit_f.m nh− sau:
f = get(edit_f_,'String');
f= str2num(f);
set(slider_f_,'Value',f);
cã nhiÖm vô cËp nhËt gi¸ trÞ gi÷ t¹i ‘Value’ cña slider_f_ ®Ó råi sau ®ã fc_calc.m lµm nèt
phÇn viÖc cßn l¹i: tÝnh ®æi nhiÖt ®é vµ g¸n vµo vÞ trÝ c¹nh « chøa chuçi “Celcius”.
§4. nhËp sè liÖu tuú chän
1. Kh¸i niÖm chung: Ngoµi kh¶ n¨ng nhËp d÷ liÖu cè ®Þnh theo kiÓu string hay kiÓu sè, ta
cã thÓ nhËp d÷ liÖu theo mét danh môc nµo ®ã. §Ó minh ho¹, ta t¹o file test.m nh− sau:
f = input('Nhap nhiet do: ');
r = f+459.7;
c = (f-32)*5/9;
k = c+273.15;
choice = input(['Nhap 1 cho Rankie','2 cho Celcius','3 cho Kelvin: ']);
if choice==1
fprintf(1,'Nhiet do (do R) la: %gn',r);
elseif choice==2
fprintf(2,'Nhiet do (do C) la: %gn',c);
elseif choice==3
fprintf(2,'Nhiet do (do C) la: %gn',c);
end
Tõ cöa sæ lÖnh, nhËp lÖnh test th× MATLAB sÏ hái nhiÖt ®é vµ ®Ých quy ®æi råi hiÓn thÞ kÕt
qu¶. Tuy hhiªn c«ng cô GUI cña MATLAB cho phÐp ta thùc hiÖn viÖc lùa chän thuËn lîi
h¬n. ta cã thÓ chän mét trong 4 ph−¬ng ¸n nhËp d÷ liÖu sau ®©y:
- dïng menu
- dïng list box
- dïng radio button
- dïng check box
2. Dïng menu: ta xo¸ bá chuçi “Celcius” trong lÖnh text_c1_ vµ thay vµo ®ã kh¶ n¨ng chän
theo popup menu nh− sau:
delete(text_c1_);
pop_c_ = uicontrol( gcf,
‘Style’, ‘Popupmenu’,...
‘String’, ‘Rankine|Celcius|Kelvin’,...
‘Value’, 2,...
‘Position’, [0.0 .3 0.2 0.05],...
‘Callback’, ‘fc_popup_c;fc_calc2’);
Khi kÝch chuét vµo Popup Menu , cã ba kh¶ n¨ng chän lùa sÏ xuÊt hiÖn. TiÕp tôc nh¸y chuét
vµo mét trong 3 kh¶ n¨ng ®ã , Popup Menu biÕn mÊt chØ cßn l¹i ®¬n vÞ ®−îc chän. Khi dïng
chuét kÐo thanh tr−ît ë frame phÝa trªn, ta cã ®−îc gi¸ trÞ quy ®æi sang ®¬n vÞ ®−îc chän
hiÓn thÞ ë phÝa d−íi. Trong ®o¹n ch−¬ng tr×nh trªn, gi¸ trÞ ‘Value’ ®Æt s½n lµ 2. Khi Callback
gäi fc_popup_c.m:
choice = get(popup_c_,’Value’);
h× gi¸ trÞ cña biÕn choice ®−îc ®−a tíi ‘Value’. Sau ®ã Callback gäi tiÕp fc_calc2.m ®Ó xem
kÕt qu¶ gi÷ trong choice. File fc_calc2.m nh− sau:
f = get(edit_f_,'String');
f = str2num(f);
r= f+459.7;
c = (f-32)*5/9;
k = c+273.15;
choice = input(['Nhap 1 cho Rankie','2 cho Celcius','3 cho Kelvin: ']);
if choice==1
t = r;
elseif choice==2
t = c;
elseif choice==3
t= k
end
t = num2str(t);
set(text_c2_,'String',t);
CÇn l−u ý r»ng ®Ó ®¹t ®−îc kÕt qu¶ , ta cßn ph¶i b¸o cho edit vµ slider uicontrol biÕt ®Ó dïng
fc_calc2.m b»ng c¸ch bæ sung thªm c¸c dßng sau:
set(edit_f_,...
‘Callback’,’fc_edit_f;fc_calc2’);
set(edit_f_,...
‘Callback’,’fc_slider_f;fc_calc2’);
B»ng c¸ch thay ‘Popupmenu’ b»ng ‘Listbox’ uicontrol ta cã ph−¬ng ¸n listbox. §iÓm
kh¸c duy nhÊt lµ khi chän, Popupmenu chØ chøa mét phÇn tö th× listbox cã thÓ ®ång thêi
chøa nhiÒu phÇn tö, phô thuéc duy nhÊt vµo chiÒu cao t¹i vÞ trÝ(‘Position’ property).
3. Dïng radio button: Ta dïng lÖnh delete(popup_c_) ®Ó xo¸ uicontrol t¹o Popup Menu
“Rankine | Celcius | Kelvin” vµ thªm vµo 3 uicontrol t¹o 3 nót chän thø nguyªn nhiÖt ®é sau:
delete(popup_c_);
strings = [‘Rankine’;’Celcius’;’Kelvin’];
show = [ 0 ; 1 ; 0 ];
ys = [ 3 ; 2 ; 1]* 0.075 + 0.075;
for i = 1:3
radio_c_(i) = uicontrol( gcf,
‘Style’,‘Radiobutton’,...
‘String’, strings(i),...
‘Value’, show(i),...
‘Posiotion’, [0.3 ys(i) 0.0 0.05],...
‘Callback’, ‘fc_radio_c;fc_calc2’);
ta dïng mét chuçi Callback cho c¶ 3 nót. Tr−íc hÕt Callbackgäi fc_radio_c.m ®Ó nhË biÕt
nót nµo(1, 2 hay 3) ®−îc chän, sau ®ã cÊt gi¸ trÞ biÕn ®−îc chän vµo choice.
for i = 1:3
if gcbo == radio_c_(i)
choice = i;
set(radio_c_(i),’Value’,1);
else
set(radio_c_(i),’Value’,0);
end;
end;
§o¹n script trªn lµ mét vßng lÆp, so s¸nh sè (handle) Callback thu ®−îc (gi¸ trÞ do
hµm gcbo tr¶ vÒ) víi handle cña mçi nut. Nót nµo cã sã trïng sÏ ®−îc ®ãng (turn on, ‘Value’
= 1) vµ nótnµo kh¸c sè sÏ bÞ ng¾t (turn off,’Value’ = 0). Cuèi cïng Callback gäi fc_calc2.m
®Ó thùc hiÖn viÖc tÝnh quy ®æi ®−îc chän vµ hiÓn thÞ kÕt qu¶.
 
 
§5. c¸c ph−¬ng ph¸p t¹o gui
1. T¹o GUI b»ng c«ng cô ®å ho¹: Trªn ®©y ta ®· xem xÐt c¸ch t¹o GUI b»ng ph−¬ng ph¸p
thñ c«ng. Ta cã thÓ t¹o GUI b»ng c«ng cô ®å ho¹. Khi nhËp lÖnh guide ta gäi tr×nh ®å ho¹ ®Ó
s¹on th¶o layout. KÕt qu¶ ®Çu tiªn lµ ta cã mét layout rçng. ViÖc ®Çu tiªn

Mais conteúdo relacionado

Mais procurados

3 ban ve ky thuat - cnckhacda.com
3 ban ve ky thuat - cnckhacda.com3 ban ve ky thuat - cnckhacda.com
3 ban ve ky thuat - cnckhacda.comCNC khac da
 
TÁC DỤNG CÁC LỆNH TRONG GERBER ACCUMARK 8.5
TÁC DỤNG CÁC LỆNH TRONG GERBER ACCUMARK 8.5TÁC DỤNG CÁC LỆNH TRONG GERBER ACCUMARK 8.5
TÁC DỤNG CÁC LỆNH TRONG GERBER ACCUMARK 8.5Nhân Quả Công Bằng
 
phan thiet ke - cnckhacda.com
phan thiet ke - cnckhacda.comphan thiet ke - cnckhacda.com
phan thiet ke - cnckhacda.comCNC khac da
 
Tổng hợp các phím tắt trong Macbook
Tổng hợp các phím tắt trong Macbook Tổng hợp các phím tắt trong Macbook
Tổng hợp các phím tắt trong Macbook Sòyo Pinky
 
Tài liệu phần mềm gerber accumark bước cơ bản
Tài liệu phần mềm gerber accumark  bước cơ bảnTài liệu phần mềm gerber accumark  bước cơ bản
Tài liệu phần mềm gerber accumark bước cơ bảnTÀI LIỆU NGÀNH MAY
 
Giao trinh autocad_2007_full
Giao trinh autocad_2007_fullGiao trinh autocad_2007_full
Giao trinh autocad_2007_fullkirahocit
 

Mais procurados (8)

3 ban ve ky thuat - cnckhacda.com
3 ban ve ky thuat - cnckhacda.com3 ban ve ky thuat - cnckhacda.com
3 ban ve ky thuat - cnckhacda.com
 
TÁC DỤNG CÁC LỆNH TRONG GERBER ACCUMARK 8.5
TÁC DỤNG CÁC LỆNH TRONG GERBER ACCUMARK 8.5TÁC DỤNG CÁC LỆNH TRONG GERBER ACCUMARK 8.5
TÁC DỤNG CÁC LỆNH TRONG GERBER ACCUMARK 8.5
 
Mastercam 2017 cho người mới học
Mastercam 2017 cho người mới họcMastercam 2017 cho người mới học
Mastercam 2017 cho người mới học
 
Giao trinh-autocad-2007-
Giao trinh-autocad-2007-Giao trinh-autocad-2007-
Giao trinh-autocad-2007-
 
phan thiet ke - cnckhacda.com
phan thiet ke - cnckhacda.comphan thiet ke - cnckhacda.com
phan thiet ke - cnckhacda.com
 
Tổng hợp các phím tắt trong Macbook
Tổng hợp các phím tắt trong Macbook Tổng hợp các phím tắt trong Macbook
Tổng hợp các phím tắt trong Macbook
 
Tài liệu phần mềm gerber accumark bước cơ bản
Tài liệu phần mềm gerber accumark  bước cơ bảnTài liệu phần mềm gerber accumark  bước cơ bản
Tài liệu phần mềm gerber accumark bước cơ bản
 
Giao trinh autocad_2007_full
Giao trinh autocad_2007_fullGiao trinh autocad_2007_full
Giao trinh autocad_2007_full
 

Destaque

SCIOGLIMENTO CONSIGLIO COMUNALE ISOLA DURANTE D'ARPA BONUSO RISO PIETRO 19.pdf
SCIOGLIMENTO CONSIGLIO COMUNALE ISOLA DURANTE D'ARPA BONUSO RISO PIETRO 19.pdfSCIOGLIMENTO CONSIGLIO COMUNALE ISOLA DURANTE D'ARPA BONUSO RISO PIETRO 19.pdf
SCIOGLIMENTO CONSIGLIO COMUNALE ISOLA DURANTE D'ARPA BONUSO RISO PIETRO 19.pdfPino Ciampolillo
 
Faq on wills answered by a trusted calgary legal wills lawyer part 9
Faq on wills answered by a trusted calgary legal wills lawyer   part 9Faq on wills answered by a trusted calgary legal wills lawyer   part 9
Faq on wills answered by a trusted calgary legal wills lawyer part 9calgaRywiLLsfaq01
 
Hi professional member
Hi professional memberHi professional member
Hi professional memberaswathy1
 
Evaluation task 7
Evaluation task 7Evaluation task 7
Evaluation task 7bethsawyers
 
Ciampolillo note critiche al ctu 271213 (2)
Ciampolillo note critiche al ctu 271213 (2)Ciampolillo note critiche al ctu 271213 (2)
Ciampolillo note critiche al ctu 271213 (2)Pino Ciampolillo
 
Scioglimento consiglio comunale isola durante bonuso d'arpa riso pietro delib...
Scioglimento consiglio comunale isola durante bonuso d'arpa riso pietro delib...Scioglimento consiglio comunale isola durante bonuso d'arpa riso pietro delib...
Scioglimento consiglio comunale isola durante bonuso d'arpa riso pietro delib...Pino Ciampolillo
 
SCIOGLIMENTO CONSIGLIO COMUNALE ISOLA DURANTE D'ARPA BONUSO PIETRO RISO det.1...
SCIOGLIMENTO CONSIGLIO COMUNALE ISOLA DURANTE D'ARPA BONUSO PIETRO RISO det.1...SCIOGLIMENTO CONSIGLIO COMUNALE ISOLA DURANTE D'ARPA BONUSO PIETRO RISO det.1...
SCIOGLIMENTO CONSIGLIO COMUNALE ISOLA DURANTE D'ARPA BONUSO PIETRO RISO det.1...Pino Ciampolillo
 
Caravello micalizzi mutolo riccobono enea contrada sentenza ii_appello__2_
Caravello micalizzi mutolo riccobono enea contrada sentenza ii_appello__2_Caravello micalizzi mutolo riccobono enea contrada sentenza ii_appello__2_
Caravello micalizzi mutolo riccobono enea contrada sentenza ii_appello__2_Pino Ciampolillo
 
L italcementi ricorso al tar provincia 5355 2012 pagina 4 egale novembre 2012
L italcementi ricorso al tar provincia 5355 2012 pagina 4 egale novembre 2012L italcementi ricorso al tar provincia 5355 2012 pagina 4 egale novembre 2012
L italcementi ricorso al tar provincia 5355 2012 pagina 4 egale novembre 2012Pino Ciampolillo
 
Scioglimento c.c. isola ordinanza imapstato madre assessore cutino n. 79
Scioglimento c.c. isola ordinanza imapstato madre assessore cutino  n. 79Scioglimento c.c. isola ordinanza imapstato madre assessore cutino  n. 79
Scioglimento c.c. isola ordinanza imapstato madre assessore cutino n. 79Pino Ciampolillo
 
Evaluation 5
Evaluation 5Evaluation 5
Evaluation 5sam__bell
 

Destaque (20)

Chuong2
Chuong2Chuong2
Chuong2
 
3 feb 2014 metro
3 feb  2014  metro3 feb  2014  metro
3 feb 2014 metro
 
5 march 2014 mehfooz
5 march   2014 mehfooz5 march   2014 mehfooz
5 march 2014 mehfooz
 
SCIOGLIMENTO CONSIGLIO COMUNALE ISOLA DURANTE D'ARPA BONUSO RISO PIETRO 19.pdf
SCIOGLIMENTO CONSIGLIO COMUNALE ISOLA DURANTE D'ARPA BONUSO RISO PIETRO 19.pdfSCIOGLIMENTO CONSIGLIO COMUNALE ISOLA DURANTE D'ARPA BONUSO RISO PIETRO 19.pdf
SCIOGLIMENTO CONSIGLIO COMUNALE ISOLA DURANTE D'ARPA BONUSO RISO PIETRO 19.pdf
 
15 march 2017
15 march   201715 march   2017
15 march 2017
 
Faq on wills answered by a trusted calgary legal wills lawyer part 9
Faq on wills answered by a trusted calgary legal wills lawyer   part 9Faq on wills answered by a trusted calgary legal wills lawyer   part 9
Faq on wills answered by a trusted calgary legal wills lawyer part 9
 
Hi professional member
Hi professional memberHi professional member
Hi professional member
 
15 jan 2014 mehfooz
15  jan  2014 mehfooz15  jan  2014 mehfooz
15 jan 2014 mehfooz
 
INDIA LOCAL
INDIA LOCALINDIA LOCAL
INDIA LOCAL
 
Channing tatum
Channing tatumChanning tatum
Channing tatum
 
Evaluation task 7
Evaluation task 7Evaluation task 7
Evaluation task 7
 
Ciampolillo note critiche al ctu 271213 (2)
Ciampolillo note critiche al ctu 271213 (2)Ciampolillo note critiche al ctu 271213 (2)
Ciampolillo note critiche al ctu 271213 (2)
 
Scioglimento consiglio comunale isola durante bonuso d'arpa riso pietro delib...
Scioglimento consiglio comunale isola durante bonuso d'arpa riso pietro delib...Scioglimento consiglio comunale isola durante bonuso d'arpa riso pietro delib...
Scioglimento consiglio comunale isola durante bonuso d'arpa riso pietro delib...
 
SCIOGLIMENTO CONSIGLIO COMUNALE ISOLA DURANTE D'ARPA BONUSO PIETRO RISO det.1...
SCIOGLIMENTO CONSIGLIO COMUNALE ISOLA DURANTE D'ARPA BONUSO PIETRO RISO det.1...SCIOGLIMENTO CONSIGLIO COMUNALE ISOLA DURANTE D'ARPA BONUSO PIETRO RISO det.1...
SCIOGLIMENTO CONSIGLIO COMUNALE ISOLA DURANTE D'ARPA BONUSO PIETRO RISO det.1...
 
Caravello micalizzi mutolo riccobono enea contrada sentenza ii_appello__2_
Caravello micalizzi mutolo riccobono enea contrada sentenza ii_appello__2_Caravello micalizzi mutolo riccobono enea contrada sentenza ii_appello__2_
Caravello micalizzi mutolo riccobono enea contrada sentenza ii_appello__2_
 
1 jan 2013
1 jan 20131 jan 2013
1 jan 2013
 
L italcementi ricorso al tar provincia 5355 2012 pagina 4 egale novembre 2012
L italcementi ricorso al tar provincia 5355 2012 pagina 4 egale novembre 2012L italcementi ricorso al tar provincia 5355 2012 pagina 4 egale novembre 2012
L italcementi ricorso al tar provincia 5355 2012 pagina 4 egale novembre 2012
 
Arture Connect
Arture ConnectArture Connect
Arture Connect
 
Scioglimento c.c. isola ordinanza imapstato madre assessore cutino n. 79
Scioglimento c.c. isola ordinanza imapstato madre assessore cutino  n. 79Scioglimento c.c. isola ordinanza imapstato madre assessore cutino  n. 79
Scioglimento c.c. isola ordinanza imapstato madre assessore cutino n. 79
 
Evaluation 5
Evaluation 5Evaluation 5
Evaluation 5
 

Chuong3

  • 1. ch−¬ng 3: Giao diÖn ®å ho¹ GUI §1. Kh¸i niÖm chung §Ó tiÖn dông ta cã thÓ t¹o nªn giao diÖn ®å ho¹(GUI - Graphic User Interface) gi÷a ng−êi dïng vµ MATLAB. Trong giao diÖn nµy ta cã thÓ xuÊt d÷ liÖu d−íi 2 d¹ng: v¨n b¶n vµ ®ß ho¹. Mçi mét GUI cã mét hay nhiÒu layout(diÖn m¹o). §Ó t¹o ra vµ xö lÝ layout ciña GUI ta nhËp lÖn guide vµ nhËn ®−îc mét layout rçng vµ cöa sæ Guide Control Panel. ViÖc t¹o GUI t¹o nªn mét c«ng cô ®å ho¹ phôc vô nhËp xuÊt d÷ liÖu mét c¸ch trùc gi¸c, rÊt thuËn tiÖn. Ngoµi ra cã thÓ dïng GUI ®Ó gi¸m s¸t c¸c qu¸ tr×nh, hiÓn thÞ c¸c ®èi t−îng. §2. nhËp xuÊt kÝ tù, sè liÖu ra GUI 1. T¹o khung h×nh: Ta xÐt c¸c lÖnh sau: f = input('Enter temperature(degree K): '); c = (f - 32)*5/9; fprintf(1,'Temperature(degree C) is: %gn',c) Ba dßng lÖnh trªn thùc hiÖn c¸c c«ng viÖc sau: - nhËp gi¸ trÞ ®Çu vµo - thùc hiÖn phÐp tÝnh quy ®æi nhiÖt ®é - xuÊt kÕt qu¶ ra mµn h×nh B©y giê ta t×m c¸ch cµi c¸c dßng lÖnh trªn sao cho chóng thùc hiÖn trªn khu«n khæ mét khung ®å ho¹ nµo ®ã. §Ó t¹o hai khung h×nh ch÷ nhËt trong cöa sæ Figure hiÖn hµnh víi nÒn mµu x¸m ta nhËp vµo c¸c lÖnh sau: set(gcf,'DefaultUicontrolUnit','Normalized') frame1_ = uicontrol(gcf,'Style','Frame','Position',[0.1 0.1 0.8 0.3]); frame2_ = uicontrol(gcf,'Style','Frame','Position',[0.1 0.6 0.8 0.3]); set(frame1_,'BackgroundColor',[0.5 0.5 0.5]); set(frame2_,'BackgroundColor',[0.5 0.5 0.5]); Hai khung (Frames) cã to¹ ®é c¸c gãc d−íi tr¸i lµ (0.1, 0.1) vµ (0.1, 0.6), cïng chiÒu cao 0.3 ®¬n vÞ vµ bÒ réng 0.8 ®¬n vÞ. §¬n vÞ ®−îc t×nh b»ng % cña kÝch c÷ ngoµi cña Figure. VËy ta cã thÓ diÔn gi¶i nh− sau: - Khung thø nhÊt cèÝgc tr¸i d−íi t¹i ®iÓm cã to¹ ®é 10% chiÒu ngang vµ 10% chiÒu cao cña khung ngoµi Figure. - Khung thø 2 cã gãc tr¸i phÝa d−íi t¹i ®iÓm cã to¹ ®ä øng víi 10% chiÒu ngang vµ 60% chiÒu cao cña khung ngo×a Figure. - C¶ hai khung cã chiÒu cao b»ng 30% chiÒu cao vµ bÒ ngang b»ng 80% bÒ ngang cña khung ngoµi Figure. 2. Dïng lÖnh edit vµ text ®Ó nhËp xu¸t kÝ tù vµ sè liÖu: Trªn ®©y ta ®· dïng lÖnh uicontrol ®Ó t¹o vµ x¸c ®Þnh vÞ trÝ hai khung h×nh. §o¹n lÖnh sau ®©y dïng uicontrol ®Ó viÕt chuçi kÝ tù “Fahrenheit” lªn khung bªn trªn: text_f_=uicontrol(gcf,'Style','Text','String','Fahrenheit: ',... 'Position',[0.3 0.7 0.2 0.05],'HorizontalAlignment','Left'); Chuçi kÝ tù “Fahrenhaeit” ®−îc ®Æt vµo ®óng vÞ trÝ dån tr¸i cña « cã Position ghi trong ®o¹n ch−¬ng tr×nh trªn. §¹on lÖnh sau dïng Edit ®Ó viÕt chuçi kÝ rù “68.0” vµo vÞ trÝ bªn c¹nh cña “Fahrenheit”. Chuçi kÝ tù cã vÞ trÝ dån ph¶i trong « (Position Box). edit_f_=uicontrol(gcf,'Style','edit','String','68.0’... ,'Position',[0.6 0.7 0.2 0.05],'HorizontalAlignment','Right,’Callback’,’fc_calc');
  • 2. Do sö dông edit, chuçi kÝ tù “68.0” lµ chuçi cã thÓ viÕt l¹i ®−îc trùc tiÕp trªn GUI. Sau khi nhÊn nót trªn, gi¸ trÞ míi viÕt l¹i ®−îc tiÕp nhËn vµ MATLAB sÏ gäi lÖnh viÕt trong phÇn callback: fc_calc. Cuèi cïng ta cßn ph¶i dïng uicontrol ®Ó t¹o ta chuçi text, hiÓn thÞ chuçi “Celcius” vµ “20.0” trong khung bªn d−íi. text_c1_= uicontrol(gcf,'Style','Text','String','Celcius: ',... 'Position',[0.3 0.3 0.2 0.05],'HorizontalAlignment','Left'); text_c2_= uicontrol(gcf,'Style','Text','String','20.0','Position',... [0.6 0.3 0.1 0.05],'HorizontalAlignment','Left'); §Ó thuËn tiÖn ta nªn viÕt c¸c lÖnh nµy nµy trong mét file script. 3. Tù ®éng cËp nhËt gi¸ trÞ lªn GUI: §Ó hoµn thiÖn vÝ dô GUI ta thùc hiÖn ch−¬ng tr×nh víi nhiÖm vô tÝnh quy ®æi tõ ®é K sang ®é C vµ tù ®éng ®iÒn kÕt qu¶ vµo c¸c « bªn ¹ch chuçi Celcius. §o¹n ch−¬ng tr×nh nµy phôc vô môc ®Ých callback (hoµn tr¶ gi¸ trÞ) ®−îc l−u vµo file fc_calc.m vµ cã néi dung nh− sau: f = get(edit_f_,'String'); f = str2num(f); c = (f-32)*5/9; c = num2str(c); set(text_c2_,'String',c); §o¹n m· trªn nhËn gi¸ trÞ do lÖnh uicontrol “edit” ®äc vµo d−íi d¹ng chuçi (string) vµ sau ®ã: - biÕn ®æi tõ d¹ng string sang d¹ng sè - tÝnh quy ®æi tõ nhiÖt ®é fahrenheit sang nhiÖt ®é celcius - biÕn ®æi tõ sè sang string - xuÊt kÕt qu¶ d−íi d¹ng string ra GUI nhê text_c2_ §3. nhËp sè liÖu tõ thanh tr−ît Ngo×a c¸ch nhËp sè liÖu tõ bµn phÝm, ta cã thÓ nhËp sè liÖu tõ thanh tr−ît. MATLAB chØ hç trù c¸c thanh tr−ît n»m ngang chø kh«ng hç trî c¸c thanh tr−ît th¼ng ®øng. §Ó t¹o thanh tr−ît ta dïng lÖnh: slider_f_ = uicontrol(gcf,'Style','Slider','Min',... 32.0,'Max',212.0,'Value',68.0,'Position',[0.6 0.8 0.2 0.05],... 'Callback','fc_slider_f;fc_calc'); Nh− vËy Callback cã thÓ gäi mét chuçi c¸c lÖnh MATLAB, ph©n c¸ch nhau b»ng dÊu chÊm than hay dÊu phÈy. Chuçi callback gäi fc_silder_f.m: f = get(slider_f_,'Value'); f = num2str(f); set(edit_f_,'String',f); víi t¸c dông nhËp nhiÖt ®é gi÷ t¹i ‘Value’ cña slider_f_ vµo vÞ trÝ bªn c¹nh « chøa chuçi “Fahrenheit”. Sau ®ã Callback gäi tiÕp fc_calc.m ®Ó tÝnh quy ®æi gi¸ trÞ nhiÖt ®é vµ g¸n vµo « c¹nh chuçi “Celcius”. Tuy nhiªn ®Ó nhËp ®−îc gi¸ trÞ míi do ng−êi dïng thanh tr−ît g©y nªn , ta ph¶i thay ®æi l¹i chuçi lÖnh nh− sau: slider_f_ = uicontrol(gcf,'Style','Slider','Min',... 32.0,'Max',212.0,'Value',68.0,'Position',[0.6 0.8 0.2 0.05],... 'Callback','fc_edit_f, fc_calc'); Trong ®ã file fc_edit_f.m nh− sau: f = get(edit_f_,'String'); f= str2num(f); set(slider_f_,'Value',f);
  • 3. cã nhiÖm vô cËp nhËt gi¸ trÞ gi÷ t¹i ‘Value’ cña slider_f_ ®Ó råi sau ®ã fc_calc.m lµm nèt phÇn viÖc cßn l¹i: tÝnh ®æi nhiÖt ®é vµ g¸n vµo vÞ trÝ c¹nh « chøa chuçi “Celcius”. §4. nhËp sè liÖu tuú chän 1. Kh¸i niÖm chung: Ngoµi kh¶ n¨ng nhËp d÷ liÖu cè ®Þnh theo kiÓu string hay kiÓu sè, ta cã thÓ nhËp d÷ liÖu theo mét danh môc nµo ®ã. §Ó minh ho¹, ta t¹o file test.m nh− sau: f = input('Nhap nhiet do: '); r = f+459.7; c = (f-32)*5/9; k = c+273.15; choice = input(['Nhap 1 cho Rankie','2 cho Celcius','3 cho Kelvin: ']); if choice==1 fprintf(1,'Nhiet do (do R) la: %gn',r); elseif choice==2 fprintf(2,'Nhiet do (do C) la: %gn',c); elseif choice==3 fprintf(2,'Nhiet do (do C) la: %gn',c); end Tõ cöa sæ lÖnh, nhËp lÖnh test th× MATLAB sÏ hái nhiÖt ®é vµ ®Ých quy ®æi råi hiÓn thÞ kÕt qu¶. Tuy hhiªn c«ng cô GUI cña MATLAB cho phÐp ta thùc hiÖn viÖc lùa chän thuËn lîi h¬n. ta cã thÓ chän mét trong 4 ph−¬ng ¸n nhËp d÷ liÖu sau ®©y: - dïng menu - dïng list box - dïng radio button - dïng check box 2. Dïng menu: ta xo¸ bá chuçi “Celcius” trong lÖnh text_c1_ vµ thay vµo ®ã kh¶ n¨ng chän theo popup menu nh− sau: delete(text_c1_); pop_c_ = uicontrol( gcf, ‘Style’, ‘Popupmenu’,... ‘String’, ‘Rankine|Celcius|Kelvin’,... ‘Value’, 2,... ‘Position’, [0.0 .3 0.2 0.05],... ‘Callback’, ‘fc_popup_c;fc_calc2’); Khi kÝch chuét vµo Popup Menu , cã ba kh¶ n¨ng chän lùa sÏ xuÊt hiÖn. TiÕp tôc nh¸y chuét vµo mét trong 3 kh¶ n¨ng ®ã , Popup Menu biÕn mÊt chØ cßn l¹i ®¬n vÞ ®−îc chän. Khi dïng chuét kÐo thanh tr−ît ë frame phÝa trªn, ta cã ®−îc gi¸ trÞ quy ®æi sang ®¬n vÞ ®−îc chän hiÓn thÞ ë phÝa d−íi. Trong ®o¹n ch−¬ng tr×nh trªn, gi¸ trÞ ‘Value’ ®Æt s½n lµ 2. Khi Callback gäi fc_popup_c.m: choice = get(popup_c_,’Value’); h× gi¸ trÞ cña biÕn choice ®−îc ®−a tíi ‘Value’. Sau ®ã Callback gäi tiÕp fc_calc2.m ®Ó xem kÕt qu¶ gi÷ trong choice. File fc_calc2.m nh− sau: f = get(edit_f_,'String'); f = str2num(f); r= f+459.7; c = (f-32)*5/9; k = c+273.15; choice = input(['Nhap 1 cho Rankie','2 cho Celcius','3 cho Kelvin: ']);
  • 4. if choice==1 t = r; elseif choice==2 t = c; elseif choice==3 t= k end t = num2str(t); set(text_c2_,'String',t); CÇn l−u ý r»ng ®Ó ®¹t ®−îc kÕt qu¶ , ta cßn ph¶i b¸o cho edit vµ slider uicontrol biÕt ®Ó dïng fc_calc2.m b»ng c¸ch bæ sung thªm c¸c dßng sau: set(edit_f_,... ‘Callback’,’fc_edit_f;fc_calc2’); set(edit_f_,... ‘Callback’,’fc_slider_f;fc_calc2’); B»ng c¸ch thay ‘Popupmenu’ b»ng ‘Listbox’ uicontrol ta cã ph−¬ng ¸n listbox. §iÓm kh¸c duy nhÊt lµ khi chän, Popupmenu chØ chøa mét phÇn tö th× listbox cã thÓ ®ång thêi chøa nhiÒu phÇn tö, phô thuéc duy nhÊt vµo chiÒu cao t¹i vÞ trÝ(‘Position’ property). 3. Dïng radio button: Ta dïng lÖnh delete(popup_c_) ®Ó xo¸ uicontrol t¹o Popup Menu “Rankine | Celcius | Kelvin” vµ thªm vµo 3 uicontrol t¹o 3 nót chän thø nguyªn nhiÖt ®é sau: delete(popup_c_); strings = [‘Rankine’;’Celcius’;’Kelvin’]; show = [ 0 ; 1 ; 0 ]; ys = [ 3 ; 2 ; 1]* 0.075 + 0.075; for i = 1:3 radio_c_(i) = uicontrol( gcf, ‘Style’,‘Radiobutton’,... ‘String’, strings(i),... ‘Value’, show(i),... ‘Posiotion’, [0.3 ys(i) 0.0 0.05],... ‘Callback’, ‘fc_radio_c;fc_calc2’); ta dïng mét chuçi Callback cho c¶ 3 nót. Tr−íc hÕt Callbackgäi fc_radio_c.m ®Ó nhË biÕt nót nµo(1, 2 hay 3) ®−îc chän, sau ®ã cÊt gi¸ trÞ biÕn ®−îc chän vµo choice. for i = 1:3 if gcbo == radio_c_(i) choice = i; set(radio_c_(i),’Value’,1); else set(radio_c_(i),’Value’,0); end; end; §o¹n script trªn lµ mét vßng lÆp, so s¸nh sè (handle) Callback thu ®−îc (gi¸ trÞ do hµm gcbo tr¶ vÒ) víi handle cña mçi nut. Nót nµo cã sã trïng sÏ ®−îc ®ãng (turn on, ‘Value’ = 1) vµ nótnµo kh¸c sè sÏ bÞ ng¾t (turn off,’Value’ = 0). Cuèi cïng Callback gäi fc_calc2.m ®Ó thùc hiÖn viÖc tÝnh quy ®æi ®−îc chän vµ hiÓn thÞ kÕt qu¶.    
  • 5. §5. c¸c ph−¬ng ph¸p t¹o gui 1. T¹o GUI b»ng c«ng cô ®å ho¹: Trªn ®©y ta ®· xem xÐt c¸ch t¹o GUI b»ng ph−¬ng ph¸p thñ c«ng. Ta cã thÓ t¹o GUI b»ng c«ng cô ®å ho¹. Khi nhËp lÖnh guide ta gäi tr×nh ®å ho¹ ®Ó s¹on th¶o layout. KÕt qu¶ ®Çu tiªn lµ ta cã mét layout rçng. ViÖc ®Çu tiªn