آخرين ارسالهاي تالار

آموزش GUI (قسمت چهارم) مشاهده در قالب PDF چاپ فرستادن به ایمیل
نوشته شده توسط مجتبی آیتی نیا   
شنبه, 27 شهریور 1389 ساعت 21:30

در قسمت دوم آموزش GUI ، طراحی یک GUI نسبتا کامل و در ارتباط با آنالیز سیستم‌های کنترلی را آغاز کردیم. در قسمت سوم آموزش نیز کدنویسی آن‌را شروع کردیم. حال می‌خواهیم در این قسمت ادامه‌ی کدنویسی آن‌را انجام داده و GUI نهایی را تست کنیم.

به Callback منوی Exit رفته و قطعه کد زیر را وارد کنید:

button = questdlg('Do you want to quit the ControlTool?', ...

'Quit the ControlTool','Yes','No','No');

switch button

case 'Yes',

close('ControlTool');

case 'No',

quit cancel;

end

توضیح کد:

این کد یک دیالوگ پرسشی را برای کاربر به نمایش درمی‌آورد. این دیالوگ معمولا دارای گزینه‌های Yes ، No و Cancel می‌باشد که در این مورد ما فقط از گزینه‌های Yes و No استفاده کرده‌ایم. اگر کاربر دگمه‌ی Yes را بفشارد، از برنامه‌ی ControlTool خارج می‌شود و اگر No را انتخاب کند، عملیات خروج، لغو می‌گردد.

به Callback منوی Reset رفته و همان کدی را که برای دگمه‌ی فشاری Reset در قسمت سوم آموزش شرح دادم، قرار دهید.

حال به Callback منوی Figure رفته و کد زیر را وارد کنید:

printdlg(ControlTool);

این کد از کل GUI‌ی ما پرینت می‌گیرد. درواقع این دستور از کل محتویات یک شیء گرافیکی(که در این مورد این شیء گرافیکی ControlTool نام دارد)، پرینت تهیه می‌کند.

سپس به Callback منوی Response of LTI System رفته و قطعه کد زیر را وارد کنید:

axes1fig = figure(10010);

axes1copy = copyobj(handles.axes1,axes1fig);

set(axes1copy,'Units','default','Position','default');

printdlg(10010);

close 10010

 

توضیح کد:

این کد ابتدا یک شیء گرافیکی ایجاد کرده و سپس axes موردنظر را بوسیله‌ی دستور copyobj در آن شیء کپی می‌کند. پس از آن واحدها و مکان axes کپی شده در شیء ساخته شده به حالت پیش‌فرض خود می‌روند. بعد از آن از شیء گرافیکی ایجاد شده، پرینت گرفته می‌شود و نهایت هم شیء گرافیکی بسته می‌شود.

درادامه به Callbackهای Roots analysis و Frequency response رفته و همان کد بالا را برای آنها بنویسید. فقط تنها تغییری که می‌دهید این است که برای هرکدام، axes مربوطه را قرار می‌دهید.

حال به Callback منوی Show grid رفته و قطعه کد زیر را وارد کنید:

grid(handles.axes1,'on');

grid(handles.axes2,'on');

grid(handles.axes3,'on');

 

همان‌طور که کاملا واضح است، این دستورات، نمودارها را شبکه‌بندی می‌کنند.

برای منوی Hide grid نیز عین این دستورات را به کار ببرید با این تفاوت که به‌جای on از off استفاده کنید. با این کار شبکه‌بندی کلیه‌ی نمودارها حذف می‌شود.

به Callback منوی Using the ControlTool رفته و کد زیر را وارد کنید:

helpdlg('This is a graphical user interface(GUI) that apply for analysis of linear systems.','Help');

 

توضیح کد:

این دستور یک دیالوگ کمک را برای کاربر به نمایش در‌می‌آورد. نویسنده‌ی GUI ، می‌تواند در این قسمت تمامی مواردی را که به کاربر در نحوه‌ی استفاده از برنامه کمک می‌کند، وارد کند. این دیالوگ را اگر یادتان باشد، می‌توانیم با کلیدهای Ctrl+H نیز باز کنیم.

درنهایت به Callback منوی About ControlTool رفته و کد زیر را وارد کنید:

helpdlg('Created by Mojtaba Ayati nia   Email: آدرس ایمیل جهت جلوگیری از رباتهای هرزنامه محافظت شده اند، جهت مشاهده آنها شما نیاز به فعال ساختن جاوا اسکریپت دارید ','About ControlTool');

 

توضیح کد:

این کد یک دیالوگ از نوع کمک را ایجاد می‌کند که شامل اطلاعاتی درباره‌ی سازنده‌ی برنامه و... می‌باشد. شما می‌توانید اسم و دیگر مشخصات خودتان را وارد کنید.

در این مرحله کدنویسی به پایان رسیده و می‌توانیم GUI را اجرا کنیم.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

اگر سؤالي داشتيد مي‌توانيد در بخش نظرات آن را مطرح كنيد.

از لینک زیر می‌توانید این GUI را دریافت کنید:

دانلود

 

براي رفتن به ديگر قسمت‌ها، به‌روي لينك‌هاي زير كليك كنيد:

آموزش GUI (قسمت اول)

آموزش GUI (قسمت دوم)

آموزش GUI (قسمت سوم)

آموزش GUI (قسمت چهارم)

 

نظر ها (141)
  • alaleh  - ممنونم خیلی زیاد
    واقعا عالی بود
    ممنون از زحماتتون
  • moj1001
    مرسي
  • AH  - Thanks a lot
    Vagaan dastetun dard nakone
    Ali Bud
  • azi  - تشکر
    سلام
    با تشکر خیلی مفید بود.
  • vahid  - سوال
    اگر بخواهيم همزمان بااجراي برنامه(زدن Run)، زمان را نيز به طور پيوسته در صفحه، نمايش دهيم چه کار بايد کرد :?: :?: :?: :?:
    ممنون :P :P :P :P :P :P
  • moj1001
    منظورت رو متوجه نمي‌شم؟ زمان منظورت ساعته يا زمان شروع برنامه؟
  • vahid  - سوال
    مظورم اينه که بازدن Run, دو کار همزمان انجام بشه!
    :roll: :roll: :roll:
  • moj1001
    شما با زدن دگمه Run در واقع يك سري دستورات را اجرا مي‌كنيد. حال اين دستورات مي‌توانند دو كار همزمان نيز انجام دهند.(البته من منظورتان را كاملا از دو کار همزمان متوجه نشدم!)
  • vahid
    مي خواهم از طريق GUI يه سري ورودي به يک M-File ياM_Functionبدهم و خروجي آن را به GUI برگردانم.
    چه کار بايد کرد؟؟
    ممنون ازوقت که ميگذاري که سوالات رو جواب بدي
    :wink: :wink: :wink: :wink:
  • vahid  - یافتن جواب
    در رابطه با ایجاد ارتباط ما بین GUI و M-file که سوال کردم فهمیدم که می توان از دستور evalیا evalin استفاده کرد.
    :idea: :idea: :idea: :idea: :idea:
    تشکر زیاد
  • moj1001
    موفق باشي :twisted:
  • آرمان  - انتخاب نقطه
    سلام
    چطوری میشه از روی نمودار نقطه ای رو انتخاب کرد و مختصات اون رو به برنامه فرستاد؟؟؟

    نمودار توی یک GUI البته
  • سلام  - وارد کردن scroll به gui
    می خواستم بدونم میشه صفحه gui را به صورت scroll دار در آورد تا اگه مثلا خواستیم 10 تا نمودار تو یه صفحه رسم کرد جا بشه؟
  • moj1001
    اگه مي‌خاي چند نمودار جداگونه داشته باشي خب چند تا axes مي‌ياري و اگه بخاي چند نمودار رو روي يك صفحه داشته باشي از دستور hold استفاده مي‌كني.
  • ناشناس  - re:
    moj1001 نوشت:
    اگه مي‌خاي چند نمودار جداگونه داشته باشي خب چند تا axes مي‌ياري و اگه بخاي چند نمودار رو روي يك صفحه داشته باشي از دستور hold استفاده مي‌كني.

    ببخشید فکر کنم منظورم رو متوجه نشدیداندازه مساحت صفحه gui محدوده. با دسگیره های کنار صفحه هم تا یه حدی صفحه رو بزرگ می کنه. نمیشه 10 تا نمودار رو توش جا کرد. منظورم اینه که مثل صفحه های اینترنت که scroll داره صفحه بالا پایین میره. صفحه gui بالا پایین بره و نمودار ها زیر هم کشیده بشه
  • moj1001
    ok
    Maximizing the Layout Area

    You can make maximum use of space within the Layout Editor by hiding the GUIDE toolbar, status bar, or both. To do this, deselect Show Toolbar and/or Show Status Bar from the View menu. Showing only tool icons on the component palette gives you more room as well. To show only tool icons on the component palette, select Preferences from the GUIDE File menu and deselect Show names in component palette. If you do all these things, the layout editor looks like this.
    http://s1.picofile.com/file/6991736416/gui.png
  • criceos  - re:
    moj1001 نوشت:
    مرسي


    با سلام
    من یک کد در mfile نوشتم که ورودی آن عدد و خروجی آن 4تا نمودار هستش که شامل ارتباط سریال و یک سری پردازش هست
    برای اینکه من ورودی و خروجی را در gui نشون بدم باید کل کد را در gui بنویسم؟ میشه یکم توضیح بدین؟
  • moj1001
    سلام
    هم مي‌توني كل كد رو تو gui بنويسي و هم قسمتي رو جدا در يك mfile نوشته و در gui از اون استفاده كني.
تنها کاربران عضو شده می توانند نظر ارسال کنند!
آخرین بروز رسانی در سه شنبه, 07 دی 1395 ساعت 19:43