GUI (رابط گرافيكي براي كاربر) نوعي رابط تـصويري بـراي برنامـه اسـت كـه نمونـة خـوب آنميتواند با فـراهم كـردن شـكل و صـورتي ثابـت بـراي برنامـه و همچنـين بـا كنترلگرهـاي آشـنا، مثـل
menus وsliders جعبه هـاي ليـست) و) list boxes ،(دكمه هاي فشاري) pushbuttons
(منوها) و مانند اينها استفاده از برنامه را آسانتر كند. رابط گرافيكي بايد رفتاري قابل فهـم و پـيشبينـيداشته باشد، بدين معني كه كاربر بداند در ازاي انجام عملي خاص، چه اتفاقي خواهد افتـاد. بـراي مثـال،هنگامي كه ماوس روي يكpushbutton كليك ميكند،GUI بايد عملي را كه روي آن نوشته شده،آغاز كند.
اين فصل به معرفي عناصر اصلي رابطهاي گرافيكيMATLAB اختصاص دارد. با اينكه اين فـصلحاوي توضيحات كاملي دربارة خصوصيات همه اجزاي رابطهاي گرافيكـي نيـست، ولـي اصـول كلـي لازمبراي ايجاد GUI هاي كاربردي براي برنامه هاي كاربران، در آن گنجانيده شده است.
يك GUI چگونه كار مي كند؟
رابــط گرافيكــي (GUI) محيطــي آشــنا بــراي كــاربر فــراهم مــي كنــد. ايــن محــيط حــاويpushbutton ها، togglebutton ها، list ها، menu ها، text box ها، و . . . مـي باشـدكه براي همة كاربران آشناست و اين موجب ميشود كه كاربر به جاي مشغول كردن ذهن خود با چنـد وچون اجراي برنامه و پيچيدگي آن، تنها روي استفاده از آن تمركز كند. ايجاد رابـطه ـاي گرافيكـي بـرايبرنامه نويس كار مشكلي است. زيرا برنامهاي كـه بـر پايـة GUI طراحـي شـده بايـد در هـر زمـان آمـادةوروديهاي ماوس و (يا احت مالاً وروديهاي كيبرد ) روي هر يك از عناصر خـود باشـد. ايـن وروديهـا بـهevent ها معروفند. برنامه اي كه به اين event ها پاسخ گويد، event driven ناميده مي شود. سه عنصر اساسي لازم براي ايجاد رابط گرافيكي (MATLAB (GUI عبارتند از:
1- (Components) اجزا
عناصر درونpushbutton) GUI ها،label ها،editbox ها ) اجزاي گرافيكي نام دارند .
انواع اين اجزا شامل كنتـرلهـاي گرافيكـي، (ماننـدpushbutton هـا،editbox هـا،list هـا،slider ها و. . .) عناصر ثابت و بدون تغيير (مانند قابها و نوشتههـا )، منوهـا و محورهـاي مختـصاتهستند. كنترلهاي گرافيكي و عناصر ثابت توسط تابعuncontenxmenu به وجود ميآيند. در نهايت،محورهاي مختصات كه وظيفة نمايش دادههاي گرافيكي را بر عهده دارند، توسـط تـابعaxes بـه وجـودمي آيند.
2- (Figures) اشكال
اجزايGUI بايد درون يكfigure مرتب شوند، كـه پنجـرهاي روي صـفحه كـامپيوتر اسـت. پيش از اينfigure ها به طور خودكار هنگام ترسيم دادهها بوجود ميآمدند. با اين وجـود،figure هاي خالي را نيز ميتوان با دستورfigure ايجاد كرد و از آنهـا مـيتـوان بـراي نگـهداري و كنـار هـمگذاشتن اجزاي گرافيكي استفاده كرد.
3- (Callbacks) فراخوان ها
بايد راهي براي انجام عملي خاص هنگامي كه كاربر با ماوس روي يك دكمه كليك يا اطلاعاتي راتوسط كيبرد تايپ ميكند، وجود داشته باشد. هر كليك ماوس يا فشار كليد از صفحه كليد يـكevent تلقي ميشود و برنامةMATLAB بايد با اجراي تابع مربوطه، به اينevent پاسخ گويد. به عنـو ان مثـال،اگر كاربر روي يك دكمه كليك كند، اين پيش آمد بايد سـبب اجـراي كـد مربـوط بـهfunction آندكمه شود . كد اجرا شده در پاسخ به اين پيش آمد، callback نام دارد. در حقيقت بايد براي عملكـردهر جزء گرافيكي GUI يه callback وجود داشته باشد.
عناصر اصليGUI ها در زير به خلاصه و نمونههايي از آنها در شكل 1-1 نشان داده شـده اسـت.
در ادامه مثالهايي از اين عناصر را مطالعه كرده و سپس با استفاده از آنها به ايجـادGUI هـاي كـاربرديخواهيم پرداخت.
مشخصات بعضي از عناصر اصلي GUI :
uicontrol) : Pushbutton) : اين جزء گرافيكي كار يك دكمه فشاري را انجام ميدهـد .
هنگامي كه با ماوس روي آن كليك شود، callback مربوطه را فعال مي كند.
uicontrol) : Toggle button) : جزئي گرافيكي است كه كار يـك كليـد دو حالتـه راانجام ميدهد. اين كليد دو وضعيت يا “روشن” است يا “خاموش” و هر بار كه بـا مـاوس روي آن كليـكشود، تغيير وضعيت داده و callback مربوط به آن فعال مي شود.
uicontrol) : Radio button) : نوعي از toggle button هاست كه بـه صـورتدايرة كوچكي است و هنگام “روشن” بودن نقطـه اي در مركـز آن قـرار مـي گيـرد. گروهـي ازradio button ها را ميتوان براي پيادهسازي گزينههاي مستقل استفاده كرد. هر كليك ماوس روي اين جـزءcallback آن را فعال مي كند.
check box : (uicontrol) : Check box نوعي از toggle button ها است كه به شكل مربعي كوچك با علامت تيك (3) در درون آن به منزلة “روشـن ” بـودن مـيباشـد . هـر كليـكماوس روي آن، callback آن را فعال مي كند.
edit box : (uicontrol) : Edit box متني را نمـايش مـي دهـد و بـه كـاربر اجـازهميدهد اطلاعات نشان داده شده در آن را تغيير دهد. Callback مربوط به آن با فشار دكمـهenter فعال مي شود.
uicontrol) : List box) : كنترلي گرافيكي است كه يـك سـري از مـتن هـاي رشـته اي
(text string) را نمايش مي دهد كاربر مي تواند با يك يا دو بار كليك روي هر يك از اين متن هـايرشته اي آنها را انتخاب كند. به هنگام انتخاب يك متن رشته اي callback آن فعال مي شود.
uicontrol) : Popupmenu) : كنترلي گرافيكي است كه در پاسخ بـه كليـك مـاوس يـكدسته از متنهاي رشتهاي را نمايش ميدهد. تا هنگامي كه روي يك منويpopup كليك نـشده اسـت،تنها رشتة انتخاب شده فعلي آن قابل مشاده است.
slider : (uicontrol) : Slider كنترل گرافيكي ديگري است كه نقش آن تنظيم يكمقدار به طور منظم و پيوسته با كشيدن كنتـرل آن بـه وسـيله مـاوس اسـت. هـر تغييـر درslider ،callback اش را فعال مي كند.
uicontrol) : Frame) : يك قاب ايجاد ميكند كه در حقيقيت جعبـة مربعـي شـكل درونfigure ميباشد. قابها براي گروه بندي مجموعهاي از كنترلهاي گرافيكي استفاده ميشوند. قابها هرگزcallback ي را فعال نمي كنند.
uicontrol) : Text field) : برچسبي (label) ايجاد مي كند كه متني رشته اي واقع در نقطهاي روي figure است. text field ها هرگز callback ي را فعال نميكنند.
uimenu) : Menu items) : يك منو ايجاد مي نمايد و callback اين منوهـا بـه هنگـامكليك ماوس روي آنها فعال مي شود.
uicontextmenu) : Context menu) : يك منوي context ايجاد مي نمايد. هنگامي كه كاربر روي شيء مورد نظر با كليك سمت راست ماوس، كليك مي كند اين منو ظاهر مي شود.
axes) : Axes) : يك دستگاه مختصات براي نمايش اطلاعات در آن، ايجاد ميكند. Axes هاهيچ گاه callback ي را فعال نمي كنند.
2–1 ايجاد و نمايش يك GUI GUI هايMATLAB را ميتوان با ابزاري به نامguide ، ايجاد كرد. اين ابزار به برنامـه نـويسامكان پيادهسـازيGUI ، انتخـاب و مرتـب كـردن اجـزاي درون آن را مـيدهـد . بعـد از اينكـه اجـزا در جاهايشان قرار گرفتند، برنامه نويس ميتواند خصوصيات (properties) هر يك را اعم از اسم، رنـگ،اندازه، فونت، و نوشتة روي آن و. . . ويرايش كند. هنگـامي كـهguide يـكGUI را ذخيـره مـي كنـد،برنامهاي حاوي مجموعهاي از توابع كليدي ايجاد ميكند كه برنامه نويس ميتواند با تغييـر در ايـن توابـعرفتار GUI را تنظيم كند.
ناحية روشن چهار خانه،layout (كادر و ناحية طراحي) نام دارد، ناحيه اي كـه برنامـه نـويس،GUI را در آن طراحي مي كند. در قسمت چپ پنجرة layout editor ، مجموعه اي از عناصر GUI قرار دارند . كاربر ميتواند هر تعداد از اين اجزا را ابتدا با كليك روي جزء مورد نظر و سپس كشيدن آن بـهدرون ناحيهlayout ايجاد كند. بالاي اين پنجره يكtoolbar حاوي يك سـري از ابزارهـاي مفيـدوجود دارد كه به كاربر اجازه ميدهد تا اجزايGUI را هم راستا كرده يا روي ناحية طراحي پخش كنـد ويا خصوصيات (propertise) اين اجزا را تغيير داده و يا به GUI منو اضافه كند يا . . .
گام هاي اساسي لازم براي ايجاد يك GUI در MATLAB به قرار زير است:
1- ابتدا بايد تصميم بگيريد كه به چه عناصري براي كارتـان احتيـاج داريـد و نقـش هـر يـك راتعيين كنيد، سپس طراحي اوليه و درهم برهمي از اين اجزا با دست روي كاغذ بياوريد.
2- از ابزار guide (محيط توسط يافته GUI ) براي چيدن اجزا درون figure كمك بگيريد.
ابعاد و اندازهfigure ، هم راستايي و فضاي بين اجزا را مـيتـوان بـا ابزارهـاي درونguide تنظيم كرد.
3- از يكـي ديگـر از ابزارهـاي MATLAB بـه نـام Property Inspector (واقـع درون guide ) استفاده كنيد تا به هر كدام از اجزا، يك لقب( يك “tag”) نسبت دهيـد و ويژگـيهـاي هـريك را كه شامل رنگ، متن نمايش داده شده، غيره مي باشد، تنظيم نمائيد.
4- figure را در يك فايل ذخيره كنيد. بعد از اينكهfigure زا ذخيره كرديد، دو فايـل بـااسامي يكسان ولي با پسوندهاي متفاوت روي ديسكت بوجود ميآيند. فايل بـا پـسوند.fig خـودGUI هاي ايجادشده، و فايل ديگر M-File ميباشد، كه حاوي كد آن و بدنـةcallback هـاي مربـوط بـهعناصر GUI است.
5- كدي بنويسيد كه رفتار مربوط به هر تابع callback را انجام مي دهد.
به عنوان نمونه براي ايـن مراحـل، بيائيـد يـكGUI سـاده را در نظـر بگيـريم كـه حـاوي يـكpushbutton ساده و يك متن رشتهاي ميباشد. با هر بار كليك رويpushbutton متن رشتهاي طوري تغيير ميكند تا تعداد كل دفعاتي كه از ابتداي كارGUI رويpushbutton كليك شده اسـترا نمايش دهد.
دانلود فایل اصلی
با سلام و خسته نباشید. میخواستم ببینم آیا میشه امکاناتی مثل نوار Ribbon control رو به GUI متلب اضافه کرد؟؟
سلام بله امکانش هست.
در متلب 2018 امکانات جدیدی به متلب اضافه شده است به نام App designer
که قابلیت های بسیار بیشتری از GUI دارد.