اگر قرار باشد برنامهای بنویسیم که کاربر نهایی با آن سروکار داشته باشد، حتماً لازم است یک محیط گرافیکی برای نرمافزارمان ایجاد کنیم. رابط گرافیکی یا GUI همان چیزی است که در کار کردن با یک برنامه میبینیم و با آن تعامل داریم. در این مقاله ۶ تا از بهترین فریمورکهای رابط گرافیکی در پایتون را معرفی و ویژگی آنها را بررسی میکنم.
ماژولها و فریمورکهایی که در این مقاله معرفی میکنم جزء بهترینها و محبوبترینها بین برنامهنویسان هستند. اما این مسئله به این معنی نیست که بقیهٔ فریمورکها خوب نیستند! نه! شما باید بنا به نیازهایی که برای برنامهتان دارید و ویژگیهای هر کدام از ماژولها، بهترین گزینه را انتخاب کنید.
رابط گرافیکی یا GUI در پایتون
رابط گرافیکی یا GUI همان محیط بصری است که ما در کار با یک برنامه میبینیم. اگر آموزش پایتون یا هر آموزش برنامهنویسی دیگری را گذرانده باشید، احتمال خیلی زیاد همهٔ یا بخشی از زمان تمرینکردن را به کار در محیط کنسول گذراندهاید؛ همان محیط سرد و بی روح! 😉
در محیطهای گرافیکی معمولاً از یکسری قاب و صفحه و مجموعهای از عناصر استفاده میکنیم. عناصری مثل دکمهها، فرمها، عکسها، متنهای رنگی و … .
اگر برنامهای که در حال توسعه آن هستید قرار است با کاربر نهایی (یا یک نفر غیر برنامهنویس) در ارتباط باشد، داشتن ظاهر خوب یا محیط و رابط گرافیکی ساده و زیبا میتواند کمک زیادی به موفقیت برنامهتان کند.
در بخش بعدی شش تا از محبوبترین فریمورکهای طراحی و توسعه محیط و رابط گرافیکی در پایتون را به شما معرفی میکنم. همچنین سعی میکنم وضعیت فعلی آنها در سال ۱۴۰۱ را نیز در بخش ویژگیها مطرح کنم. شخصاً تجربه کار با سه تای اولی را داشتهام و سه مورد دوم بر اساس منابع مختلف جمعآوری شده است.
اگر میخواهید صرفاً یک رابط گرافیکی با پایتون ایجاد کنید یا هدفتان یادگیری یک فریمورک در این زمینه است، پیشنهاد من یکی از ۳ تای اولی است. این سه تا دارای محبوبیت بیشتر، منابع آموزشی و کدهای نمونهٔ بیشتری هستند.
۶ فریمورک رابط گرافیکی با python
در این بخش فریمورکهای محبوب برای طراحی محیط گرافیکی در پایتون را معرفی و بررسی میکنیم. ترتیب در بین اینها اهمیت زیادی ندارید ولی خوب است بدانید سه تای اول توسط توسعهدهندگان بیشتری استفاده میشود. در بخش بعدی در مورد انتخاب بهترین GUI پایتون پیشنهادهایی میدهم.
Tkinter : پیشفرض همراه پایتون!
Tkinter ترکیبی از فریمورکهای رابط کاربری گرافیکی استاندارد است که تمام عناصر اصلی برای ایجاد یک GUI قوی را در اختیار ما میگذارد. اگر در نصب پایتون از آخرین نسخه استفاده کرده باشید، احتمال زیاد همراه با پایتون برای شما نصب شده باشید.
یعنی الآن کافی است import tkinter
را در محیط کدتان نوشته و از آن استفاده کنید!
این ماژول عناصر بصری مختلفی در اختیارمان میگذارد که با آنها میتوانیم صفحات مختلف، دکمهها، چکباکس، متن، فضای انتخاب فایل و canvas (برای نمایش نمودار و طرحها) ایجاد کنیم.
چون Tkinter بهطور پیشفرض روی پایتون ارائه می شود، آموزشهای بیشتری از آن در سطح اینترنت و کتابها موجود است. همچنین کدهای آمادهٔ بیشتری برای آن پیدا میکنید.
این رابط گرافیکی در پایتون بسیار محبوب است و در ایران نیز معمولاً برای GUIهای دمِدستی و در برخی موارد حرفهای از آن استفاده میکنند؛ مخصوصاُ برای توسعه برنامههای desktop.
خیلیها از این کتابخانه با عنوان «جعبه ابزار پیادهسازی گرافیک در پایتون» یاد میکنند.
PyQt برای طراحی گرافیکی پایتون
پایکیوتی یک فریمورک چندسکویی (cross-platform) است که برای توسعه گرافیکی پایتون روی سیستم عاملهای مختلف ارائه شده است. این چارچوب، حول ابزار QT (متعلق به شرکت Nokia) را بر روی پایتون پیادهسازی ابزارمیکند.
از PyQt برای طراحی برنامههای پایتون روی ویندوز، لینوکس، مک، اندروید و IOS استفاده میکنند.
نسخه فعلی این فریمورک، PyQt5 است که علاوه بر مسائل گرافیکی، APIهایی برای استفاده از امکاناتی نظیر Location، بلوتوث و اتصال NFC را در دستگاهها در اختیارمان میگذارد.
برای توسعه رابط گرافیکی با PyQt5 میتوانیم کدنویسی کنیم یا از ابزارهای طراحی (با قابلیت Drag & Drop عناصر گرافیکی و چیدن آنها) استفاده کنیم. برنامههای QtGUI و QtDesigner محبوبترین محیطهای توسعه بصری این فریمورک هستند.
برای نصب این فریمورک میتوانید از دستور pip install PyQt5
استفاده کنید.
بهعنوان خلاصه، ویژگیهای PyQt5 عبارتاند از:
- چندسکویی بودن و قابلیت طراحی رابط گرافیکی برای Windows، Linux، Mac، IOS و Android
- امکان کدنویسی یا استفاده از ابزار بصری برای طراحی
- ماژولار بودن
- عیب: فقط برای نسخه 3 پایتون
فریمورک Kivy
فریمورک کیوی یکی از گزینههای چندسکویی و منبع باز برای طراحی رابط گرافیکی در پایتون است. Kivy بر اساس پایتون و Cython برای توسعه سریع برنامههایی با رابط کاربری پیچیده ایجاد شده است.
از Kivy برای طراحی GUI برنامههای چند لمسی (multi Touch) روی سیستم عاملهای ویندوز، لینوکس، مک، iOS، اندروید و رزبریپای (Raspberry Pi) استفاده میشود. میتوانیم کدنویسی گرافیکی را یکبار انجام داده و همان کد را روی سیستمعاملهای مختلف اجرا کنیم.
در تعاریف فریمورک Kivy به کلمه NUI یا رابط کاربری طبیعی برمیخورید. این اصطلاح برای رابطهایی استفاده میشود که نیاز به آموزش ندارند! با اینکه رابط کاربری دستگاههای لمسی بعضاً پیچیده هستند، اما بدون آموزشِ خاصی، میتوانیم دکمههای مختلف درون نرمافزار را کشف و یاد بگیریم. این مفهوم دقیقاً به همین مسئله اشاره میکند.
ویژگیهای Kivy:
- چندسکویی بودن (پشتیبانی دسکتاپ، موبایل و رزبری)
- متن باز و تحت مجوز MIT
- ابزارکهای گرافیکی متنوع با پشتیبانی از چند لمسی
PySimpleGUI برای تازهکارها!
همانطور که از نامش پیداست، PySimpleGUI برای طراحی ساده رابط گرافیکی در پایتون ارائه شده است. این چارچوب برای مبتدیان و کسانی که میخواهند یک محیط گرافیکی نسبتاً ساده ایجاد کنند عالی است.
این فریمورک سعی کرده پیچیدگیهای گزینههای طراحی GUI را کاهش دهد تا طراحی گرافیک با python چندین درجه نسبت به فریمورکهای دیگر سادهتر شود! بنابراین ممکن است در برخی عناصر نتوانید تنظیمات زیادی انجام دهید.
یادگیری PySimpleGUI به دلیل حجم کدهای نهایی کمتر و منابع دردسترس سریعتر از بقیه مواردی است که در این مقاله به آنها اشاره کردهام. چند ویژگی مهم این فریمورک:
- چندسکویی
- آسان برای یادگیری
- (عیب) تا حدودی فقط برای رابطهای گرافیکی ساده استفاده میشود.
wxPython برای GUI پایتون
این گزینه یک ماژول افزونه برای پایتون است که بهنوعی یک پوشش متن باز روی wxWidgets API (در زبان c++) است. از این ماژول برای تولید GUI در ویندوز، مک و یونیکس میتوان استفاده کرد.
wxPython رابطهای کاربری بومی ایجاد میکند که طبق ادعای خودشان سربار (overhead) اضافی روی برنامه ایجاد نمیکند. شما بهراحتی میتوانید هر تابع پایتون که میخواهید را از درون محیط گرافیکی اجرا کنید.
این ماژول متن باز است و با دستور pip install wxPython
نصب میشود. ویژگیهای عمومی آن عبارتاند از:
- چندسکویی
- پشتیبانی از نسخههای 2.7 و 3
چارچوب Libavg
فریمورک Libavg به زبان سی پلاس پلاس نوشته شده و یکی از بهترین چارچوبها برای توسعه رابط کاربری دستگاههای لمسی است. برای پردازش جلوههای گرافیکی از OpenGL و امکانات GPU استفاده میشود تا نمایش آنها روان و با کیفیت باشد.
طبق ادعای چند سایت مختلف، زمان اجرای فعالیتهای گرافیکی در محیطهای لمسی با Libavg بسیار مناسب و سریع است. اگر میخواهید GUI پایتون را روی دستگاههای لمسی (تاچ) اجرا کنید، پیشنهاد میکنم این فریمورک را نیز دقیقتر بررسی کنید.
چند مورد از ویژگیهای Libavg برای طراحی گرافیکی لمسی در پایتون:
- چندسکویی (روی سیستمهای مختلف)
- پشتیبانی از درایورهای رایج نمایشگرهای لمسی
- پشتیبانی از هر دو نسخه 2.7 و 3
بهترین رابط محیط گرافیکی پایتون
در حقیقت نمیتوان جواب قطعی برای پاسخ به سؤال «بهترین فریمورک طراحی رابط گرافیکی در پایتون چیست؟» ارائه کرد! در ابتدا گفتم که باید متناسب با نیازتان و انتظاری که از توسعه یک محیط گرافیکی python دارید، گزینهی مناسب برای هر پروژه را انتخاب کنید.
با این حال، فریمورکهای PyQt، Tkinter و Kivy برای طراحی GUI در پایتون از محبوبیت و قدرت خوبی برخوردار هستند. بنابراین اگر در مسیر یادگیری هستید، میتوانید یکی از این ۳ مورد را انتخاب کرده و آموزش ببینید.
سایت activestate پیشنهادهای زیر را برای انتخاب بهترین رابط گرافیکی پایتون ارائه کرده است:
برای تازهکارها | PySimpleGUI |
دارای تنظیمات و ویژگیهای زیاد | Tkinter یا PyQt5 |
کار با نمایشگر لمسی | Kivy یا Libavg |
پیشنهاد بهترین ابزار
امیدوارم با این آموزش با ماژولهای محبوب طراحی محیط گرافیکی در پایتون آشنا شده باشید و بتوانید یکی از آنها برای هدفتان انتخاب کنید.