[آموزش 02] GUI در متلب

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
فهرست مطالب این تاپیک:

  1. ساخت یک Graphical User Interface (به اختصار : GUI) ساده در متلب
  2. تغییر متن درون یک Edit Text (با کدنویسی)، در GUI ، در متلب




منبع: kelidestan.com


تاپیک های مرتبط:
[h=1][آموزش 01] GUI در متلب[/h]
 
آخرین ویرایش:

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
ساخت یک Graphical User Interface (به اختصار : GUI) ساده در متلب

ساخت یک Graphical User Interface (به اختصار : GUI) ساده در متلب

یکی از قابلیت های نرم افزار متلب، ساخت پنجره هایی به شکل برنامه های کاربردی (applications) می باشد که به عنوان یک واسط کاربری گرافیکی (Graphical User Interface) به کار می روند. در این مبحث، با چگونگی ساخت یک Graphical User Interface ساده، آشنا می شویم.
در بالای پنجره نرم افزار متلب، یک گزینه وجود دارد که اگر موس خود را بر روی آن ببرید، عنوان GUIDE بر روی آن نمایش داده می شود :

251.png

بر روی این گزینه کلیک می کنیم تا پنجره ای به شکل زیر نمایش داده شود :

252.jpg

در این پنجره، گزینه Blank GUI را انتخاب کرده و سپس بر روی دکمه OK کلیک می کنیم. پنجره ای به شکل زیر نمایش داده می شود :


253.jpg

در این پنجره، می توانیم GUI مورد نظرمان را طراحی کنیم. در سمت چپ این پنجره، عناصر گرافیکی مختلفی نمایش داده شده است که می توانیم آنها را با موس گرفته و به درون صفحه بکشیم (drag and drop). مثلا یکی از این عنصرها، عنصر Push Button می باشد که به عنوان دکمه عمل می کند :

254.jpg

این عنصر را با موس، به درون صفحه می کشیم

255.jpg

در صورت تمایل، می توانیم بر روی عنصر کلیک کرده تا انتخاب شود و سپس با بردن موس بر روی کناره های آن و سپس کلیک کردن موس و کشیدن کناره ها، اندازه این عنصر را تغییر بدهیم :
256.jpg

اکنون بر روی عنصر Push Button ای که ساخته ایم، با موس، دابل کلیک (دو بار کلیک) می کنیم تا پنجره مربوط به مشخصات آن نمایش داده شود :

257.jpg

به عنوان مثال، من گزینه String را که برابر Push Button می باشد، به kelidestan.com تغییر می دهم. این گزینه، مربوط به متن نمایش داده شده بر روی دکمه می باشد :


258.jpg

بنابراین نتیجه به صورت زیر می باشد :

259.jpg

اکنون بر روی گزینه Save Figure کلیک می کنیم :


260.png


سپس یک پنجره باز می شود که شما باید یک نام برای فایل مورد نظر انتخاب کنید و آن را در محلی دلخواه از کامپیوتر خود، ذخیره نمایید. دقت شود که شما فایلی با فرمت fig را ذخیره می کنید، اما نرم افزار متلب، یک m-file که حاوی کدهای لازم برای ساخت آن GUI است را هم با همان نام انتخاب شده توسط شما، می سازد و آن را به طور خودکار باز می کند و به شما نمایش می دهد (در واقع، GUI بر اساس دو فایل مختلف، یکی با فرمت fig و دیگری با فرمت m ، خواهد بود). مثلا برای موردی که ما ساختیم، کدهای زیر را در m-file قرار می دهد (من نام myCode.fig را برای ذخیره فایل انتخاب کردم، بنابراین متلب یک m-file با نام myCode.m می سازد که حاوی کدهای زیر است) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]function[/COLOR] [COLOR=#0000FF]varargout[/COLOR] = myCode[COLOR=#008800]([/COLOR][COLOR=#0000FF]varargin[/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#228B22]% MYCODE MATLAB code for myCode.fig[/COLOR]
[COLOR=#228B22]%      MYCODE, by itself, creates a new MYCODE or raises the existing[/COLOR]
[COLOR=#228B22]%      singleton*.[/COLOR]
[COLOR=#228B22]%[/COLOR]
[COLOR=#228B22]%      H = MYCODE returns the handle to a new MYCODE or the handle to[/COLOR]
[COLOR=#228B22]%      the existing singleton*.[/COLOR]
[COLOR=#228B22]%[/COLOR]
[COLOR=#228B22]%      MYCODE('CALLBACK',hObject,eventData,handles,...) calls the local[/COLOR]
[COLOR=#228B22]%      function named CALLBACK in MYCODE.M with the given input arguments.[/COLOR]
[COLOR=#228B22]%[/COLOR]
[COLOR=#228B22]%      MYCODE('Property','Value',...) creates a new MYCODE or raises the[/COLOR]
[COLOR=#228B22]%      existing singleton*.  Starting from the left, property value pairs are[/COLOR]
[COLOR=#228B22]%      applied to the GUI before myCode_OpeningFcn gets called.  An[/COLOR]
[COLOR=#228B22]%      unrecognized property name or invalid value makes property application[/COLOR]
[COLOR=#228B22]%      stop.  All inputs are passed to myCode_OpeningFcn via varargin.[/COLOR]
[COLOR=#228B22]%[/COLOR]
[COLOR=#228B22]%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one[/COLOR]
[COLOR=#228B22]%      instance to run (singleton)".[/COLOR]
[COLOR=#228B22]%[/COLOR]
[COLOR=#228B22]% See also: GUIDE, GUIDATA, GUIHANDLES[/COLOR]

[COLOR=#228B22]% Edit the above text to modify the response to help myCode[/COLOR]

[COLOR=#228B22]% Last Modified by GUIDE v2.5 31-Jul-2014 00:29:58[/COLOR]

[COLOR=#228B22]% Begin initialization code - DO NOT EDIT[/COLOR]
gui_Singleton = [COLOR=#3333FF]1[/COLOR];
gui_State = [COLOR=#0000FF]struct[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'gui_Name'[/COLOR],       mfilename, [COLOR=#008800]...[/COLOR]
                   [COLOR=#A020F0]'gui_Singleton'[/COLOR],  gui_Singleton, [COLOR=#008800]...[/COLOR]
                   [COLOR=#A020F0]'gui_OpeningFcn'[/COLOR], @myCode_OpeningFcn, [COLOR=#008800]...[/COLOR]
                   [COLOR=#A020F0]'gui_OutputFcn'[/COLOR],  @myCode_OutputFcn, [COLOR=#008800]...[/COLOR]
                   [COLOR=#A020F0]'gui_LayoutFcn'[/COLOR],  [COLOR=#008800][[/COLOR][COLOR=#008800]][/COLOR] , [COLOR=#008800]...[/COLOR]
                   [COLOR=#A020F0]'gui_Callback'[/COLOR],   [COLOR=#008800][[/COLOR][COLOR=#008800]][/COLOR][COLOR=#008800])[/COLOR];
[COLOR=#0000FF]if[/COLOR] [COLOR=#0000FF]nargin[/COLOR] && ischar[COLOR=#008800]([/COLOR][COLOR=#0000FF]varargin[/COLOR][COLOR=#008800]{[/COLOR][COLOR=#3333FF]1[/COLOR][COLOR=#008800]}[/COLOR][COLOR=#008800])[/COLOR]
    gui_State.gui_Callback = str2func[COLOR=#008800]([/COLOR][COLOR=#0000FF]varargin[/COLOR][COLOR=#008800]{[/COLOR][COLOR=#3333FF]1[/COLOR][COLOR=#008800]}[/COLOR][COLOR=#008800])[/COLOR];
[COLOR=#0000FF]end[/COLOR]

[COLOR=#0000FF]if[/COLOR] [COLOR=#0000FF]nargout[/COLOR]
    [COLOR=#008800][[/COLOR][COLOR=#0000FF]varargout[/COLOR][COLOR=#008800]{[/COLOR][COLOR=#3333FF]1[/COLOR]:[COLOR=#0000FF]nargout[/COLOR][COLOR=#008800]}[/COLOR][COLOR=#008800]][/COLOR] = gui_mainfcn[COLOR=#008800]([/COLOR]gui_State, [COLOR=#0000FF]varargin[/COLOR][COLOR=#008800]{[/COLOR]:[COLOR=#008800]}[/COLOR][COLOR=#008800])[/COLOR];
[COLOR=#0000FF]else[/COLOR]
    gui_mainfcn[COLOR=#008800]([/COLOR]gui_State, [COLOR=#0000FF]varargin[/COLOR][COLOR=#008800]{[/COLOR]:[COLOR=#008800]}[/COLOR][COLOR=#008800])[/COLOR];
[COLOR=#0000FF]end[/COLOR]
[COLOR=#228B22]% End initialization code - DO NOT EDIT[/COLOR]


[COLOR=#228B22]% --- Executes just before myCode is made visible.[/COLOR]
[COLOR=#0000FF]function[/COLOR] myCode_OpeningFcn[COLOR=#008800]([/COLOR]hObject, eventdata, handles, [COLOR=#0000FF]varargin[/COLOR][COLOR=#008800])[/COLOR]
[COLOR=#228B22]% This function has no output args, see OutputFcn.[/COLOR]
[COLOR=#228B22]% hObject    handle to figure[/COLOR]
[COLOR=#228B22]% eventdata  reserved - to be defined in a future version of MATLAB[/COLOR]
[COLOR=#228B22]% handles    structure with handles and user data (see GUIDATA)[/COLOR]
[COLOR=#228B22]% varargin   command line arguments to myCode (see VARARGIN)[/COLOR]

[COLOR=#228B22]% Choose default command line output for myCode[/COLOR]
handles.output = hObject;

[COLOR=#228B22]% Update handles structure[/COLOR]
guidata[COLOR=#008800]([/COLOR]hObject, handles[COLOR=#008800])[/COLOR];

[COLOR=#228B22]% UIWAIT makes myCode wait for user response (see UIRESUME)[/COLOR]
[COLOR=#228B22]% uiwait(handles.figure1);[/COLOR]


[COLOR=#228B22]% --- Outputs from this function are returned to the command line.[/COLOR]
[COLOR=#0000FF]function[/COLOR] [COLOR=#0000FF]varargout[/COLOR] = myCode_OutputFcn[COLOR=#008800]([/COLOR]hObject, eventdata, handles[COLOR=#008800])[/COLOR] 
[COLOR=#228B22]% varargout  cell array for returning output args (see VARARGOUT);[/COLOR]
[COLOR=#228B22]% hObject    handle to figure[/COLOR]
[COLOR=#228B22]% eventdata  reserved - to be defined in a future version of MATLAB[/COLOR]
[COLOR=#228B22]% handles    structure with handles and user data (see GUIDATA)[/COLOR]

[COLOR=#228B22]% Get default command line output from handles structure[/COLOR]
[COLOR=#0000FF]varargout[/COLOR][COLOR=#008800]{[/COLOR][COLOR=#3333FF]1[/COLOR][COLOR=#008800]}[/COLOR] = handles.output;


[COLOR=#228B22]% --- Executes on button press in pushbutton1.[/COLOR]
[COLOR=#0000FF]function[/COLOR] pushbutton1_Callback[COLOR=#008800]([/COLOR]hObject, eventdata, handles[COLOR=#008800])[/COLOR]
[COLOR=#228B22]% hObject    handle to pushbutton1 (see GCBO)[/COLOR]
[COLOR=#228B22]% eventdata  reserved - to be defined in a future version of MATLAB[/COLOR]
[COLOR=#228B22]% handles    structure with handles and user data (see GUIDATA)[/COLOR][/FONT]
[/FONT][/COLOR]
به خط زیر از کدها دقت کنید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]function[/COLOR] pushbutton1_Callback[COLOR=#008800]([/COLOR]hObject, eventdata, handles[COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
این تابع، زمانی اجرا می شود که کاربر بر روی آن دکمه ای که ساخته ایم، کلیک کند. بنابراین کدهای مورد نظرمان برای عملکرد دکمه را باید در زیر این خط از کدها بنویسیم.

مثلا من این خط از کدها را به صورت زیر تغییر می دهم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]function[/COLOR] pushbutton1_Callback[COLOR=#008800]([/COLOR]hObject, eventdata, handles[COLOR=#008800])[/COLOR]
[COLOR=#0000FF]disp[/COLOR][COLOR=#008800]([/COLOR][COLOR=#A020F0]'[/COLOR][/FONT][/FONT][/COLOR][COLOR=#000000][FONT=Tahoma]www.www.www.iran-eng.ir[/FONT][/COLOR][COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#A020F0]'[/COLOR][COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
همان طور که مشاهده می کنید، یک خط کد به آن اضافه کرده ام که تنها شامل دستور disp است که برای نمایش یک عبارت در خروجی نرم افزار متلب (پنجره command) به کار می رود. بنابراین وقتی کاربر بر روی دکمه اشاره می کند، باید عبارت www.www.www.iran-eng.ir در خروجی متلب نمایش داده شود.

خوب اکنون برای اجرای این GUI ، کافی است که m-file ساخته شده برای آن را اجرا کنیم. برای این منظور، بر روی گزینه Run در بالای Editor ، کلیک می کنیم :

261.jpg

بنابراین پنجره مربوط به GUI نمایش داده می شود :


262.jpg

با کلیک بر روی دکمه، عبارت www.www.www.iran-eng.ir در پنجره command نرم افزار متلب، نمایش داده می شود :



263.jpg

دقت داشته باشید که GUI ای که ساختیم، بر اساس دو فایل myCode.fig و myCode.m می باشد و شما باید این دو فایل را همیشه در کنار هم داشته باشید تا بتوانید GUI را اجرا کنید.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تغییر متن درون یک Edit Text (با کدنویسی)، در GUI ، در متلب

تغییر متن درون یک Edit Text (با کدنویسی)، در GUI ، در متلب

فرض می کنیم که در GUI متلب، یک Edit Text داریم که متنی دلخواه در آن نمایش داده شده است. اکنون قصد داریم که متن درون آن را تغییر بدهیم (با کدنویسی). ساختار GUI را به صورت زیر در نظر می گیریم (یک Push Button نیز داریم) :

1292.jpg

ابتدا باید ببینیم که نام Edit Text چیست. بنابراین در پنجره GUI ، بر روی عنصر Edit Text ، با موس، دابل کلیک می کنیم تا پنجره مشخصات آن نمایش داده شود :


1293.jpg

در این پنجره، هم در بالای پنجره و هم در قسمت Tag ، می توانیم نام Edit Text را ببینیم (که برابر edit1 است).
بنابراین، مثلا اگر بخواهیم با کدنویسی، متن نمایش داده شده در آن را به عبارت www.www.www.iran-eng.ir تغییر بدهیم، باید کد زیر اجرا شود :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]set[/COLOR][COLOR=#008800]([/COLOR]handles.edit1,[COLOR=#A020F0]'String'[/COLOR],[COLOR=#A020F0]'www.www.www.iran-eng.ir'[/COLOR][COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
به عنوان مثال، اگر بخواهیم با فشرده شدن دکمه (Push Button) موجود در GUI ، این متن در Edit Text نمایش داده شود، باید کد بالا را در Callback آن دکمه بنویسیم، یعنی به عنوان مثال، به صورت زیر :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#228B22]% --- Executes on button press in pushbutton1.[/COLOR]
[COLOR=#0000FF]function[/COLOR] pushbutton1_Callback[COLOR=#008800]([/COLOR]hObject, eventdata, handles[COLOR=#008800])[/COLOR]
[COLOR=#228B22]% hObject    handle to pushbutton1 (see GCBO)[/COLOR]
[COLOR=#228B22]% eventdata  reserved - to be defined in a future version of MATLAB[/COLOR]
[COLOR=#228B22]% handles    structure with handles and user data (see GUIDATA)[/COLOR]
[COLOR=#0000FF]set[/COLOR][COLOR=#008800]([/COLOR]handles.edit1,[COLOR=#A020F0]'String'[/COLOR],[COLOR=#A020F0]'www.www.www.iran-eng.ir'[/COLOR][COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
فایل های GUI مورد نظر را می توانید از لینک زیر دریافت کنید :
 

پیوست ها

  • 247.zip
    3.7 کیلوبایت · بازدیدها: 0
بالا