Tải bản đầy đủ (.pdf) (13 trang)

Chương 3 : Giao diện đồ họa GUI

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (349.36 KB, 13 trang )

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).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(luvàofilect3_0.m):
f=input(Nhapnhietdo(doK):);
c=(f32)*5/9;
fprintf(1,nhietdo(doC)la:%g\n,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códngsau:




Cáclnhsau(luvàofilect3_1.m)thchincôngvictrên:


42
set(gcf,DefaultUicontrolUnit,Normalized)
frame_1=uicontrol(gcf,Style,Frame,...
Position,[0.10.10.80.3]);
frame_2=uicontrol(gcf,Style,Frame,...
Position,[0.10.60.80.3]);
set(frame_1,BackgroundColor,[0.50.50.5]);
set(frame_2,BackgroundColor,[0.50.50.5]);
text_f=uicontrol(gcf,Style,Text,...
String
,Fahrenheit:,...
Position,[0.30.70.20.05],HorizontalAlignment,Left);
edit_f=uicontrol(gcf,Style,Edit,...
String,168.0,...
Position,[0.60.70.10.05],...
HorizontalAlignment,Right,...
Callback,ct3_3);
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,100.0,...
Position,[0.60.30.10.05],...
HorizontalAlignment,Left);
Bâygitasxemcáclnhtrênhotđngnhth
nà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]);
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.
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ógóc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.

43
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s
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.Đon lnh saudùngEditđvit
chuikít “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,168.0,...
Position,[0.60.70.10.05],...
HorizontalAlignment,Right,...
Callback,ct3_3);
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callbacct3_3.
 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);

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cnhchuiCelcius.Đonmãsauphcvmcđíchcallback
(hoàntrgiátr)đcluvàofilect3_3.mvàcónidungnhsau:
 f=get(edit_f,String);
f=str2num(f);
c=
(f32)*5/9;

c=num2str(c);

44
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ài cách nhp s liu t bàn phím, ta có th nhp s
liu t thanh
trt.Tamuntoramtgiaodinnhsau:




Tronggiaodinnày,contrtslàmthayđigiátrnhitđđuavàovànhit
đquyđitính theođCcũng sthayđitngng.Cáclnhtoragiao
dinnày(lutrongfilect3_2.m)
là:
set(gcf,DefaultUicontrolUnit,Normalized)
frame_1=uicontrol(gcf,Style,Frame,Position,[0.10.10.80.3]);
frame_2=uicontrol(gcf,Style,Frame,Position,[0.10.60.80.3]);
set(frame_1,BackgroundColor,[0.50.50.5]);
set(frame_2,BackgroundColor,[0.50.50.5]);
text_f=uicontrol(gcf,Style,Text,String,

Fahrenheit:,Position,...
[0.30.70.20.05],HorizontalAlignment,Left);

45
edit_f=uicontrol(gcf,Style,Edit,...
String,168.0.,,,
Position,[0.60.70.10.05],...
HorizontalAlignment,Right,...
Callback,ct3_3);
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,100.0,...
Position,[0.60.30.10.05],...
HorizontalAlignment,Left);
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,ct3_4;ct3_3
);
Đ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,ct3_4;ct3_3);
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ct3_4.m:

f=get(slider_f,Value);
f=num2str(f);
set(edit_f,String,f,CallBack,ct3_5;ct3_3);
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ct3_3.mđtínhquyđigiá
trnhitđvàgánvàoôcnhchui“Celcius”.Filect3_5.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đóct3_3.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”.


46

×