یادداشت های من | رابط های گرافیکی
سعی کردم توی این پست درباره تجربه خودم درباره رابط های گرافیکی، بیشتر توی پایتون، صحبت کنم. هرچند من خودمو تو این زمینه حرفهای نمیدونم، در هر صورت، چیزایی که دیدم و خوندم رو میخوام با شما به اشتراک بزارم؛ آخر این پست هم لینک های مفید رو گذاشتم. امیدوارم براتون مفید واقع بشه.
قدم اول: انتخاب زبان و فریمورک/کتابخونه
خب اینجا ما بیشتر درباره پایتون بحث میکنیم:) ولی زبون های دیگه، و قوی تر، هم هستند که باید با توجه به هدفتون تصمیم بگیرید از کدوم استفاده کنید.
مثلا اگه به C++ تسلط دارید، فریمورک Qt احتمالا بهترین گزینه برای شماست، هم برای طراحی کردن و دیزاین برنامه داره هم ابزار ها و ویجت هاش زیاده که باعث شده قوی بشه. توی جاوا هم چند مورد هست که من اشنایی ندارم.
یا اگه از بچه های JS کار هستید به الکترون یه سری بزنید. الکترون واسه ساختن برنامه های دسکتاپه، جوری که انگار نشستید دارید برای یه سایت طرح میزنید! یعنی با HTML و CSS و JS. بعدش میتونید از کتابخونه ها هم کمک بگیرید، مثلا react یه کتابخونه است که توی طرح کردن UI کمک خوبی میکنه، همچنین هوای JSX رو داره! حالا این دوتا رو توی هم بریزید ببینید چی میشه:)
البته react native هم هست که از نظر ظاهر شبیه react خودمونه، ولی در کل فرق داره. در واقع این یکی برای ساختن برنامه های android و IOS است؛ البته میشه با proton native میشه برنامه دسکتاپ ساخت که سینتکسش تقریبا مثل react native میمونه.
به هر حال، هرکس سلیقه خودش و برنامه خودشو داره و مطابق اون یه مورد رو انتخاب میکنه. توی پایتون هم من مواردی رو که دیدم رو اینجا معرفی میکنم بعلاوه توضیحات مختصر:
Tkinter
معمولا کسی که پایتون کار کرده باشه حداقل یه بار این اسم رو شنیده. اگه از دور بخواید بهش نگاه کنید، واسه کساییه که میخوان یه گرافیک سریع و ساده بزنن و تمام:) و اگه بخواید از نزدیک بهش نگاه کنید… منم نمیدونم! شاید بشه ازش یه چیز خفن درآورد، شایدم نه. در هر صورت اگه حوصله غرق شدن توی این بحث گرافیک برنامه رو ندارید، ولی نیازش دارید، راجبش یه سرچی کنید.
PyQt / PySide
در واقع Qt اصالتاً واسه C++ طراحی شده، ولی توی پایتون هم میتونید ازش استفاده کنید. قابلیت هایی که Qt داره باعث شده به یکی از قدرتمندترین ها تبدیل بشه، حالا اینکه عیناً همه این ابزار هارو(که توی C++ در دسترس است) میشه توی پایتون هم استفاده کرد یا نه برای من مشخص نیست، ولی قطعا اگه سمتش برید، با فرض عجله نداشتن و حوصله داشتن برای کار کردن روش، ضرر نمیکنید. برنامه هایی که باهاش نوشته شده نشون میده که برای ساختن یه برنامه با ظاهر خوب، گزینه مناسبیه.
بین PySide و PyQt یه تفاوت هایی هست که اینجا میتونید مطالعه کنید.
wxPython
اینم یکی از موارده. نوشتنش بنظر شبیه tkinter است و در ظاهر هم چیز نرمالیه. زیاد سمتش نرفتم، ممکنه برای کسی جالب باشه و ممکنه هم نباشه! در هر صورت یه نگاه اگه خواستید بندازید، ضرری نداره:)
kivy
یادمه حدود یه سال پیش سمتش رفته بودم یا به عبارتی غرقش شده بودم، ولی تهش پشیمون شدم:|
احتمالا از مواردی باشه که نیاز به سروکله زدن زیادی داره. اگه میخواید یه چیز جدید رو تجربه کنید که هیچ؛ولی اگه به امید ساختن یه برنامه اندروید اومدید سراغ kivy، از من به شما نصیحت که بیخیال بشید! یا حداقل دلیل انتخابتون رو عوض کنید. من اگه باشم میرم سمت react native هرچند که توی پایتون نیست. البته، اگر هم اصرار دارید، بنظر میاد پایلی کارایی دربارش کرده:) از ما اطلاع رسانی بود.
PyGTK
ممکنه با اسم pygobject یا gi بشناسیدش، از اسمش هم مشخصه که چیکاره است(البته اگه با gtk اشنایید) پس فکر نکنم نیاز به اضافهگویی باشه:)
تعریف خودش از خودش:
PyGObject is a Python package which provides bindings for GObject based libraries such as GTK, GStreamer, WebKitGTK, GLib, GIO and many more.
It supports Linux, Windows and macOS and works with Python 3.6+ and PyPy3. PyGObject, including this documentation, is licensed under the LGPLv2.1+.
pyforms
در واقع این فریمورک خودش به ۳ زیرمجموعه تقسیم میشه:
- pyforms-gui
- pyforms-web
- pyforms-terminal
که بخش با pyforms-gui کار خواهید داشت. بنظر میرسه کارکردش اینه که شما یه برنامه بنویسید و توی هر ۳ بخشی که گفتیم بتونه اجرا بشه(البته برای pyforms-web احتمالا کمی دردسر داشته باشه). تو بخشی که دربارش صحبت میکنیم از Qt قدرت گرفته و هرچند که زیاد معروف نیست، ولی بنظر کتابخونه خوبیه. اگه زیاد نمیخواید درگیر ریزکاریا بشید، یه سری بزنید بهش.
PySimpleGUI
سعی کرده که بتونید خیلی راحت یه برنامه رو بالا بیارید و بره پیِ کارش:) اگه سر ظاهر برنامه وسواس ندارید که یه چیز خیلییی خفن بشه، خیلی خوبه این یکی. ولی اگه بخواید یه کار بزرگ و خفن انجام بدید، بنظر میاد یکم وقت بیشتر نیاز داشته باشید.
libavg
حتی سمتش هم نرفتم:) ولی گفتم تو لیست باشه، ممکنه همونی باشه که نیاز دارید.
BeeWare / Toga
بنظر تازه وارده، مثل kivy. اگه کارتون جدّی و مهمه که بنظرم بیخیال بشید، ولی اگه از سرِ بیکاری اومدید یه نگاه بندازید.
لینک ها
- Qt: Qt official website | learn PyQt
- electron: official website
- react: official website | w3school tutorial
- react native: official website | react native by example
- proton native: official website
- wxPython: official website
- kivy: official website
- PyGTK: official document
- pyforms: official document
- PySimpleGUI: PyPI page | official document
- libavg: official website
- BeeWare: official website | official document | toga document
در آخر…
یه چیزی انتخاب کنید که پشیمون نشید، مثلا اگه برنامهتون نیاز به یه فریمورک خیلی خوب داره یا وقت زیادی ندارید، دنبال یه چیزی باشید که رفرنس و منابع و نمونه های خوبی داشته باشه.
و طبق معمول: ماسک بزنید! خیلی مهمه:)