際際滷

際際滷Share a Scribd company logo
ch測ng 3: Giao din 速奪 ho孫 GUI
則1. Kh存i nim chung
則 tin d担ng ta c達 th t孫o n捉n giao din 速奪 ho孫(GUI - Graphic User Interface) gi歎a
ng棚i d誰ng v袖 MATLAB. Trong giao din n袖y ta c達 th xut d歎 liu d鱈i 2 d孫ng: v即n b其n v袖
速 ho孫. M巽i m辿t GUI c達 m辿t hay nhiu layout(din m孫o). 則 t孫o ra v袖 x旦 l layout ci単a GUI
ta nhp ln guide v袖 nhn 速樽c m辿t layout r巽ng v袖 c旦a s脱 Guide Control Panel. Vic t孫o
GUI t孫o n捉n m辿t c束ng c担 速奪 ho孫 ph担c v担 nhp xut d歎 liu m辿t c存ch tr湛c gi存c, rt thun
tin. Ngo袖i ra c達 th d誰ng GUI 速 gi存m s存t c存c qu存 trnh, hin th c存c 速竪i t樽ng.
則2. nhp xut k t湛, s竪 liu ra GUI
1. T孫o khung hnh: Ta xt c存c lnh sau:
f = input('Enter temperature(degree K): ');
c = (f - 32)*5/9;
fprintf(1,'Temperature(degree C) is: %gn',c)
Ba dng lnh tr捉n th湛c hin c存c c束ng vic sau:
- nhp gi存 tr 速u v袖o
- th湛c hin php tnh quy 速脱i nhit 速辿
- xut kt qu其 ra m袖n hnh
B息y gi棚 ta tm c存ch c袖i c存c dng lnh tr捉n sao cho ch坦ng th湛c hin tr捉n khu束n kh脱 m辿t
khung 速奪 ho孫 n袖o 速達. 則 t孫o hai khung hnh ch歎 nht trong c旦a s脱 Figure hin h袖nh v鱈i nn
m袖u x存m ta nhp v袖o c存c lnh 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 chiu cao 0.3
速測n v v袖 b r辿ng 0.8 速測n v. 則測n v 速樽c tnh b損ng % c単a kch c歎 ngo袖i c単a Figure. Vy ta
c達 th din gi其i nh sau:
- Khung th淡 nht c竪gc tr存i d鱈i t孫i 速im c達 to孫 速辿 10% chiu ngang v袖 10% chiu
cao c単a khung ngo袖i Figure.
- Khung th淡 2 c達 g達c tr存i pha d鱈i t孫i 速im c達 to孫 速辰 淡ng v鱈i 10% chiu ngang v袖
60% chiu cao c単a khung ngoa Figure.
- C其 hai khung c達 chiu cao b損ng 30% chiu cao v袖 b ngang b損ng 80% b ngang c単a
khung ngo袖i Figure.
2. D誰ng lnh edit v袖 text 速 nhp xu存t k t湛 v袖 s竪 liu: Tr捉n 速息y ta 速揃 d誰ng lnh uicontrol
速 t孫o v袖 x存c 速nh v tr hai khung hnh. 則o孫n lnh sau 速息y d誰ng uicontrol 速 vit 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 trnh tr捉n. 則孫on lnh sau d誰ng Edit 速 vit 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 vit l孫i 速樽c tr湛c tip tr捉n GUI. Sau khi
nhn n坦t tr捉n, gi存 tr m鱈i vit l孫i 速樽c tip nhn v袖 MATLAB s g辰i lnh vit trong phn
callback: fc_calc.
Cu竪i c誰ng ta cn ph其i d誰ng uicontrol 速 t孫o ta chu巽i text, hin 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');
則 thun tin ta n捉n vit c存c lnh n袖y n袖y trong m辿t file script.
3. T湛 速辿ng cp nht gi存 tr l捉n GUI: 則 ho袖n thin v d担 GUI ta th湛c hin ch測ng trnh
v鱈i nhim v担 tnh quy 速脱i t探 速辿 K sang 速辿 C v袖 t湛 速辿ng 速in kt qu其 v袖o c存c 束 b捉n 孫ch
chu巽i Celcius. 則o孫n ch測ng trnh n袖y ph担c v担 m担c 速ch callback (ho袖n tr其 gi存 tr) 速樽c lu
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 nhn gi存 tr do lnh uicontrol edit 速辰c v袖o d鱈i d孫ng chu巽i (string) v袖 sau
速達:
- bin 速脱i t探 d孫ng string sang d孫ng s竪
- tnh quy 速脱i t探 nhit 速辿 fahrenheit sang nhit 速辿 celcius
- bin 速脱i t探 s竪 sang string
- xut kt qu其 d鱈i d孫ng string ra GUI nh棚 text_c2_
則3. nhp s竪 liu t探 thanh tr樽t
Ngoa c存ch nhp s竪 liu t探 b袖n phm, ta c達 th nhp s竪 liu 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 lnh:
slider_f_ = uicontrol(gcf,'Style','際際滷r','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 vy Callback c達 th g辰i m辿t chu巽i c存c lnh MATLAB, ph息n c存ch nhau b損ng du chm
than hay du phy. 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 nhp nhit 速辿 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 tip fc_calc.m 速 tnh quy 速脱i gi存 tr nhit 速辿 v袖 g存n v袖o
束 c孫nh chu巽i Celcius. Tuy nhi捉n 速 nhp 速樽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 lnh nh sau:
slider_f_ = uicontrol(gcf,'Style','際際滷r','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達 nhim v担 cp nht gi存 tr gi歎 t孫i Value c単a slider_f_ 速 r奪i sau 速達 fc_calc.m l袖m n竪t
phn vic cn l孫i: tnh 速脱i nhit 速辿 v袖 g存n v袖o v tr c孫nh 束 ch淡a chu巽i Celcius.
則4. nhp s竪 liu tu炭 ch辰n
1. Kh存i nim chung: Ngo袖i kh其 n即ng nhp d歎 liu c竪 速nh theo kiu string hay kiu s竪, ta
c達 th nhp d歎 liu 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脱 lnh, nhp lnh test th MATLAB s h叩i nhit 速辿 v袖 速ch quy 速脱i r奪i hin th kt
qu其. Tuy hhi捉n c束ng c担 GUI c単a MATLAB cho php ta th湛c hin vic l湛a ch辰n thun l樽i
h測n. ta c達 th ch辰n m辿t trong 4 ph測ng 存n nhp d歎 liu 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 lnh 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 kch chu辿t v袖o Popup Menu , c達 ba kh其 n即ng ch辰n l湛a s xut hin. Tip t担c nh存y chu辿t
v袖o m辿t trong 3 kh其 n即ng 速達 , Popup Menu bin mt ch cn l孫i 速測n v 速樽c ch辰n. Khi d誰ng
chu辿t ko thanh tr樽t 谷 frame pha tr捉n, ta c達 速樽c gi存 tr quy 速脱i sang 速測n v 速樽c ch辰n
hin th 谷 pha d鱈i. Trong 速o孫n ch測ng trnh 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 bin choice 速樽c 速a t鱈i Value. Sau 速達 Callback g辰i tip fc_calc2.m 速 xem
kt 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);
Cn lu 箪 r損ng 速 速孫t 速樽c kt qu其 , ta cn ph其i b存o cho edit v袖 slider uicontrol bit 速 d誰ng
fc_calc2.m b損ng c存ch b脱 sung th捉m c存c dng 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. 則im
kh存c duy nht l袖 khi ch辰n, Popupmenu ch ch淡a m辿t phn t旦 th listbox c達 th 速奪ng th棚i
ch淡a nhiu phn t旦, ph担 thu辿c duy nht v袖o chiu cao t孫i v tr(Position property).
3. D誰ng radio button: Ta d誰ng lnh 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 nhit 速辿 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 ht Callbackg辰i fc_radio_c.m 速 nh bit
n坦t n袖o(1, 2 hay 3) 速樽c ch辰n, sau 速達 ct gi存 tr bin 速樽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 vng lp, 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 hin vic tnh quy 速脱i 速樽c ch辰n v袖 hin th kt 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 xt 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 nhp lnh guide ta g辰i trnh 速奪 ho孫 速
s孫on th其o layout. Kt qu其 速u ti捉n l袖 ta c達 m辿t layout r巽ng. Vic 速u ti捉n

More Related Content

Chuong3

  • 1. ch測ng 3: Giao din 速奪 ho孫 GUI 則1. Kh存i nim chung 則 tin d担ng ta c達 th t孫o n捉n giao din 速奪 ho孫(GUI - Graphic User Interface) gi歎a ng棚i d誰ng v袖 MATLAB. Trong giao din n袖y ta c達 th xut d歎 liu d鱈i 2 d孫ng: v即n b其n v袖 速 ho孫. M巽i m辿t GUI c達 m辿t hay nhiu layout(din m孫o). 則 t孫o ra v袖 x旦 l layout ci単a GUI ta nhp ln guide v袖 nhn 速樽c m辿t layout r巽ng v袖 c旦a s脱 Guide Control Panel. Vic t孫o GUI t孫o n捉n m辿t c束ng c担 速奪 ho孫 ph担c v担 nhp xut d歎 liu m辿t c存ch tr湛c gi存c, rt thun tin. Ngo袖i ra c達 th d誰ng GUI 速 gi存m s存t c存c qu存 trnh, hin th c存c 速竪i t樽ng. 則2. nhp xut k t湛, s竪 liu ra GUI 1. T孫o khung hnh: Ta xt c存c lnh sau: f = input('Enter temperature(degree K): '); c = (f - 32)*5/9; fprintf(1,'Temperature(degree C) is: %gn',c) Ba dng lnh tr捉n th湛c hin c存c c束ng vic sau: - nhp gi存 tr 速u v袖o - th湛c hin php tnh quy 速脱i nhit 速辿 - xut kt qu其 ra m袖n hnh B息y gi棚 ta tm c存ch c袖i c存c dng lnh tr捉n sao cho ch坦ng th湛c hin tr捉n khu束n kh脱 m辿t khung 速奪 ho孫 n袖o 速達. 則 t孫o hai khung hnh ch歎 nht trong c旦a s脱 Figure hin h袖nh v鱈i nn m袖u x存m ta nhp v袖o c存c lnh 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 chiu cao 0.3 速測n v v袖 b r辿ng 0.8 速測n v. 則測n v 速樽c tnh b損ng % c単a kch c歎 ngo袖i c単a Figure. Vy ta c達 th din gi其i nh sau: - Khung th淡 nht c竪gc tr存i d鱈i t孫i 速im c達 to孫 速辿 10% chiu ngang v袖 10% chiu cao c単a khung ngo袖i Figure. - Khung th淡 2 c達 g達c tr存i pha d鱈i t孫i 速im c達 to孫 速辰 淡ng v鱈i 10% chiu ngang v袖 60% chiu cao c単a khung ngoa Figure. - C其 hai khung c達 chiu cao b損ng 30% chiu cao v袖 b ngang b損ng 80% b ngang c単a khung ngo袖i Figure. 2. D誰ng lnh edit v袖 text 速 nhp xu存t k t湛 v袖 s竪 liu: Tr捉n 速息y ta 速揃 d誰ng lnh uicontrol 速 t孫o v袖 x存c 速nh v tr hai khung hnh. 則o孫n lnh sau 速息y d誰ng uicontrol 速 vit 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 trnh tr捉n. 則孫on lnh sau d誰ng Edit 速 vit 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 vit l孫i 速樽c tr湛c tip tr捉n GUI. Sau khi nhn n坦t tr捉n, gi存 tr m鱈i vit l孫i 速樽c tip nhn v袖 MATLAB s g辰i lnh vit trong phn callback: fc_calc. Cu竪i c誰ng ta cn ph其i d誰ng uicontrol 速 t孫o ta chu巽i text, hin 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'); 則 thun tin ta n捉n vit c存c lnh n袖y n袖y trong m辿t file script. 3. T湛 速辿ng cp nht gi存 tr l捉n GUI: 則 ho袖n thin v d担 GUI ta th湛c hin ch測ng trnh v鱈i nhim v担 tnh quy 速脱i t探 速辿 K sang 速辿 C v袖 t湛 速辿ng 速in kt qu其 v袖o c存c 束 b捉n 孫ch chu巽i Celcius. 則o孫n ch測ng trnh n袖y ph担c v担 m担c 速ch callback (ho袖n tr其 gi存 tr) 速樽c lu 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 nhn gi存 tr do lnh uicontrol edit 速辰c v袖o d鱈i d孫ng chu巽i (string) v袖 sau 速達: - bin 速脱i t探 d孫ng string sang d孫ng s竪 - tnh quy 速脱i t探 nhit 速辿 fahrenheit sang nhit 速辿 celcius - bin 速脱i t探 s竪 sang string - xut kt qu其 d鱈i d孫ng string ra GUI nh棚 text_c2_ 則3. nhp s竪 liu t探 thanh tr樽t Ngoa c存ch nhp s竪 liu t探 b袖n phm, ta c達 th nhp s竪 liu 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 lnh: slider_f_ = uicontrol(gcf,'Style','際際滷r','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 vy Callback c達 th g辰i m辿t chu巽i c存c lnh MATLAB, ph息n c存ch nhau b損ng du chm than hay du phy. 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 nhp nhit 速辿 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 tip fc_calc.m 速 tnh quy 速脱i gi存 tr nhit 速辿 v袖 g存n v袖o 束 c孫nh chu巽i Celcius. Tuy nhi捉n 速 nhp 速樽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 lnh nh sau: slider_f_ = uicontrol(gcf,'Style','際際滷r','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達 nhim v担 cp nht gi存 tr gi歎 t孫i Value c単a slider_f_ 速 r奪i sau 速達 fc_calc.m l袖m n竪t phn vic cn l孫i: tnh 速脱i nhit 速辿 v袖 g存n v袖o v tr c孫nh 束 ch淡a chu巽i Celcius. 則4. nhp s竪 liu tu炭 ch辰n 1. Kh存i nim chung: Ngo袖i kh其 n即ng nhp d歎 liu c竪 速nh theo kiu string hay kiu s竪, ta c達 th nhp d歎 liu 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脱 lnh, nhp lnh test th MATLAB s h叩i nhit 速辿 v袖 速ch quy 速脱i r奪i hin th kt qu其. Tuy hhi捉n c束ng c担 GUI c単a MATLAB cho php ta th湛c hin vic l湛a ch辰n thun l樽i h測n. ta c達 th ch辰n m辿t trong 4 ph測ng 存n nhp d歎 liu 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 lnh 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 kch chu辿t v袖o Popup Menu , c達 ba kh其 n即ng ch辰n l湛a s xut hin. Tip t担c nh存y chu辿t v袖o m辿t trong 3 kh其 n即ng 速達 , Popup Menu bin mt ch cn l孫i 速測n v 速樽c ch辰n. Khi d誰ng chu辿t ko thanh tr樽t 谷 frame pha tr捉n, ta c達 速樽c gi存 tr quy 速脱i sang 速測n v 速樽c ch辰n hin th 谷 pha d鱈i. Trong 速o孫n ch測ng trnh 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 bin choice 速樽c 速a t鱈i Value. Sau 速達 Callback g辰i tip fc_calc2.m 速 xem kt 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); Cn lu 箪 r損ng 速 速孫t 速樽c kt qu其 , ta cn ph其i b存o cho edit v袖 slider uicontrol bit 速 d誰ng fc_calc2.m b損ng c存ch b脱 sung th捉m c存c dng 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. 則im kh存c duy nht l袖 khi ch辰n, Popupmenu ch ch淡a m辿t phn t旦 th listbox c達 th 速奪ng th棚i ch淡a nhiu phn t旦, ph担 thu辿c duy nht v袖o chiu cao t孫i v tr(Position property). 3. D誰ng radio button: Ta d誰ng lnh 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 nhit 速辿 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 ht Callbackg辰i fc_radio_c.m 速 nh bit n坦t n袖o(1, 2 hay 3) 速樽c ch辰n, sau 速達 ct gi存 tr bin 速樽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 vng lp, 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 hin vic tnh quy 速脱i 速樽c ch辰n v袖 hin th kt 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 xt 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 nhp lnh guide ta g辰i trnh 速奪 ho孫 速 s孫on th其o layout. Kt qu其 速u ti捉n l袖 ta c達 m辿t layout r巽ng. Vic 速u ti捉n