شروع کار با رابط کاربری گرافیکی (GUI) در رسپبری‌پای با پایتون (قسمت سوم)

شنبه, 25 آذر 1396 16:17
این مورد را ارزیابی کنید
(5 رای‌ها)

در این آموزش خواهیم دید که چگونه می‌توان رابط‌های گرافیکی (GUIs) ساده را در رسپبری‌پای به زبان پایتون بسازیم.

مرور

در دو آموزش "شروع کار با رابط کاربری گرافیکی (GUI) در رسپبری‌پای با پایتون (قسمت اول)" و "شروع کار با رابط کاربری گرافیکی (GUI) در رسپبری‌پای با پایتون (قسمت دوم)" شما آموختید که چگونه چند ویجت ساده را استفاده کنید. کد کامل برای این بخش از آموزش‌ها را می‌توانید در انتهای آموزش دانلود کرده و ببینید تا متوجه شوید که یک مثال کامل چگونه کار می‌کند.

اکنون بیایید نگاهی به ویجت‌های پیچیده‌تر GUI بیندازیم: جعبه‌های combo، جعبه‌های check، دکمه‌های رادیو و منوی ابزار. در ادامه این آموزش با نحوه کار با این ویجت‌ها آشنا خواهیم شد.

یک App جدید

  • یک فایل جدید ایجاد کرده و بانام py ذخیره کنید.
  • یک خط کد در ابتدای فایل خود برای ورود کلاس app از کتابخانه guizero اضافه کنید.

from guizero import App

  •  اکنون دو خط کد دیگر برای ساختن App و سپس نمایش آن بر روی صفحه‌نمایش اضافه کنید.

app = App(title="My second GUI app", width=300, height=200, layout="grid") app.display()

این بار ما تعدادی کلمه کلیدی آرگومان را مشخص کرده‌ایم: width و height که ابعاد پنجره App را تغییر می‌دهد و layout که اجازه می‌دهد ویجت خود را روی یک گرید قابل‌مشاهده تنظیم کنیم.

ویجت Combo

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

  • ویجت combo را به جمله ورودی اضافه کنید.
  • ویجت combo را با دستور زیر به GUI اضافه کنید:

 film_choice = Combo(app, options=["Star Wars", "Indiana Jones", "Batman"], grid=[0,1], align="left")

 طبق معمول پارامتر app را اضافه کرده‌ایم تا به ویجت بگوییم که app رئیس است.

آرگومان option فهرستی از گزینه‌هایی است که مایلیم در ویجت combo نمایش داده شود.

به دلیل اینکه ما layout=grid را درون app مشخص کرده‌ایم، اکنون باید به همراه هر ویجت آرگومان grid را وارد کنیم تا بگوییم در کجا ظاهر شود. آرگومان گرید باید فهرستی شامل مقادیر [x,y] باشد برای جایی که دوست دارید ویجت قرار بگیرد و [0,0] روی گرید گوشه بالا سمت چپ است. ما می‌توانیم ویجت را درون مربع گرید align کنیم.

کدهای خود را ذخیره کنید و F5 را برای اجرای برنامه فشار دهید. توجه داشته باشید که combo در قسمت بسیار بالا و چپ روی صفحه‌نمایش ظاهر می‌شود بااینکه ما مکان گرید را [0,1] مشخص کردیم. این به این دلیل است که گرید خالی هیچ عرض یا ارتفاعی ندارد، بنابراین مانند مربع گرید خالی [0,0] است و تأثیری ندارد.

متن را به جمله ورودی وارد کرده، آنگاه یک ویجت متنی در مربع گرید [0,0] اضافه کنید تا مقداری توضیحات برای کسی که از combo برای انتخاب استفاده می‌کند، فراهم آورد.

 film_description = Text(app, text="Which film?", grid=[0,0], align="left")

برنامه را اجرا کرده و بررسی کنید که متن و combo هردو به‌خوبی نمایش داده شوند.

combo-with-text

ویجت check box

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

  • ویجت check box را به جمله ورودی اضافه کنید.
  • ویجت check box را به GUI اضافه کنید:

 vip_seat = CheckBox(app, text="VIP seat?", grid=[1,1], align="left")

ما همچنین تصمیم گرفتیم یک ویجت متنی در گرید [1,0] برای توضیح اینکه check box برای چه چیزی است، اضافه کنیم که نحوه نوشتن آن مانند قبل است.

  • F5 را برای اجرای کد بفشارید. شما باید ببینید که check box ظاهر می‌شود و شما قادرید تیک بزنید یا تیک را بردارید.

checkbox

ویجت دکمه گروهی (ButtonGroup widget)

ویجت دکمه گروهی به شما اجازه ایجاد گروهی از دکمه‌ها را می‌دهد بنابراین، شما می‌توانید یکی را برای تنظیم گزینه‌ها انتخاب کنید.

  • ویجت دکمه گروهی را به جمله ورودی خود اضافه کنید.
  • یک ویجت دکمه گروهی به GUI اضافه کنید:

 row_choice = ButtonGroup(app, options=[ ["Front", "F"], ["Middle", "M"],["Back", "B"] ], selected="M", horizontal=True, grid=[2,1], align="left")

 بیایید نگاه دقیق‌تری به این بیندازیم:

  • App به دکمه‌ها می‌گوید که app رئیس آن‌هاست.
  • Option یک لیست از گزینه‌هاست که به‌عنوان دکمه ظاهر می‌شود. هر گزینه همچنین یک فهرستی شامل متن است که ظاهر می‌شود و مقدار پنهانی به همراه آن گزینه ظاهر می‌گردد.
  • Selected به دکمه‌ها می‌گوید که کدام‌یک برای شروع با آن انتخاب‌شده است.
  • Horizontal می‌گوید دکمه‌ها به‌صورت خط افقی نمایش داده شوند.
  • Grid جایی است که دکمه‌ها روی گرید قرار می‌گیرند.
  • align موقعیت دکمه‌ها را روی سمت چپ مربع گرید می‌گوید.

ما همچنین ویجت متنی دیگری در [2,0] برای توضیح اینکه دکمه‌ها که چه هستند اضافه کرده‌ایم.

  • F5 را فشار دهید تا برنامه اجرا شود. شما باید دکمه‌ها ببینید. دکمه وسطی باید زمانی که برنامه شروع شود انتخاب‌شده باشد و شما باید قادر باشید بین گزینه‌ها انتخاب‌ها را تغییر دهید.

GUI

تمام کردن برنامه

  • در انتها، PushButton را به لیست ورودی اضافه کرده و سپس یک ویجت PushButton در [3,1] اضافه کنید تا تابعی را به نام do_booking را زمانی که فشرده می‌شود فرابخواند.

 book_seats = PushButton(app, command=do_booking, text="Book seat", grid=[3,1], align="left") 

booking

  • Info را به خط ورودی اضافه کنید تا به ما اجازه استفاده از تابع جعبه اطلاعات (info box) را از guizero بدهد. نحوه اضافه کردن به خط ورودی یا (Import line) را می‌توانید در "شروع کار با رابط کاربری گرافیکی (GUI) در رسپبری‌پای با پایتون (قسمت اول)" ببینید.
  • خارج از GUI، تابع do_booking را بنویسید. این یک جعبه اطلاعات فرعی را بازخواهد کرد. توجه شود که این کد باید در خارج از محیط GUI نوشته شود.

 def do_booking(): info("Booking", "Thank you for booking")

 GUI

  • شما احتمالاً می‌خواهید بدانید چگونه انتخاب کاربران را بازیابی کنید. این کد را به تابع do_function اضافه کنید:

print(film_choice.get() )print(vip_seat.get_value() )print(row_choice.get() )

توجه داشته باشید که check box اگر تیک نخورده باشد به‌صورت 0 و اگر انتخاب‌شده باشد به شکل 1 برمی‌گردد؛ و ButtonGroup به مقادیر پنهان B, F و یا M به‌جای متن کامل برمی‌گردد.

 GUI

شما می‌توانید از این آموزش برای نوشتن برنامه‌های GUI خودتان استفاده کنید. به‌عنوان‌مثال می‌توانید از برنامه‌هایی که قبلاً نوشته‌اید استفاده کنید و سعی کنید آن‌ها را به‌صورت GUI تبدیل کنید و نمایش دهید.

 

نظرات، پيشنهادات و انتقادات خود را براي بهتر شدن محتواي مطالب با ما در ميان بگذاريد...

 


ترجمه شده توسط تيم الکترونيک صنعت بازار | منبع: سايت raspberrypi.org

خواندن 2884 دفعه
پشتیبانی

عباس بطالبلو دانش‌آموخته کارشناس ارشد رشته مهندسی مکاترونیک از دانشگاه صنعتی خواجه نصیرالدین طوسی و عضو گروه رباتیک جراح آزمایشگاه ارس (ARAS) هستند. موضوع پایان نامه کارشناسی ارشد ایشان در زمینه ی «طراحی و پیاده سازی ربات ۲RT برای جراحی از دور چشم» بوده است. ایشان سابقه پیاده سازی و ساخت ربات هایی چون ربات موازی جراحی چشم، ربات سری SCARA، ربات Palletizer و … را دارند.

کاربرانی که در این گفتگو شرکت کرده اند

نظرات (4)

  1. محمدرضا

سلام استادعذر میخوام میشه یه راهنمایی کوچیک کنید ممنون میشم میخوام تاچ ال سی ذی رو ب رسپبری متصل کنم و یه برنامه گرافیکی بنویسم که بازدن هرکدوم از اشکالش تو gpio پین خرجی بگیرم ممنون میشم ???

 
  1. محمدرضا

سلام عذر میخوام استاد من می خواستم یه ال سی دی تاچ رو متصل کنم به رسپری بعد بتونم یه برنامه گرافیکی بنویسم که با زدن هر شکلش یه خروجی تو gpio بگیرم میشه راهنماییم کنید ممنون میشم ???

 
  1. آرین کشوری

آموزش ها تموم شد یا بازم می دارین؟<br />اگه بازم دارین سریع تر روی سایت قرار بدین اگه هم ندارین لطفا سریعا آماده کنین و روی سایت قرار بدین.

 
هیچ نظری در اینجا وجود ندارد

نظر خود را اضافه کنید.

ارسال نظر بعنوان یک مهمان
پیوست ها (0 / 3)
مکان خود را به اشتراک بگذارید

محتوای آموزشی استفاده شده در این سایت محافظت شده می باشد و هرگونه کپی برداری از محتواهای تولید شده توسط تیم صنعت بازار موجب پیگرد خواهد بود. استفاده از مطالب صنعت بازار تنها با ذکر منبع به صورت لینک فعال بلامانع است

ما را دنبال کنید:

Copyright © 2017-2018 | Sanatbazar.com