درس سوم: یادگیری مبانی (ویجت‌ها)

03 فروردین 1399

یادگیری مبانی PyQt

برای استفاده ی بهینه از کتابخانه جهت توسعه ی برنامه با رابط گرافیکی، شما نیازمند تسلط بر مفاهیم پایه یا مبانی PyQt هستید. برخی از این مفاهیم به شرح زیر هستند:

  • ویجت ها (اشیاء ساخت رابط کاربری)
  • layout managers یا طرح بندی کننده ها
  • Dialogs (سبکی برای ایجاد پنجره ی اصلی)
  • Main Windows یا پنجره ی اصلی
  • Applications
  • Event loops یا رویدادهای حلقه
  • signals and slots

این عناصر بدنه ی سازنده ی برنامه ی دارای رابط گرافیکی شما خواهند بود. اغلب این ها به عنوان کلاس های پایتونی می باشند و PyQt5.QtWidgets ماژولی است که این کلاس ها را فراهم می سازد و با جدیت می توان گفت که بسیار مهم است.

ویجت ها

کلاس QWidget کلاس پایه برای تمام اشیاء رابط کاربری یا همان ویجت ها می باشد که اجزای گرافیکی مستطیل شکل برای قرار دادنشان در پنجره ی برنامه هستند و با استفاده از آن ها رابط کاربری ساده برای برنامه ایجاد می کنیم.

ویجت ها شامل یک سری از متدها و صفات می باشند که امکان شکل دادن برای رفتار و ظاهرشان را به شما می دهد. همچنین می توانند  تمثالی از  خود را بر روی صفحه نمایش ترسیم کنند.

ویجت ها همچنین کلیک ماوس، فشردن دکمه و دیگر رویدادها از جانب کاربر و سیستم عامل را دریافت می کنند. هر بار که یک ویجت رویدادی را دریافت می کند، سیگنالی را مبنی بر آشکارسازی تغییر وضعیتش منتشر می کند. PyQt5 دارای مجموعه ای از به روزترین ویجت هایی است که در چندین هدف مختلف به کار می آیند.

برخی از متداول ترین و پر استفاده ترین ویجت ها به شرح زیر هستند:

  • buttons یا دکمه ها
  • labels یا برچسب ها
  • line edits
  • combo box ها یا لیست انتخابی
  • radio buttons یا ورودی چند گزینه ای با تنها یک مقدار قابل انتخاب

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

buttons

اولی button است که با استفاده از آن می توانید یک دکمه با نمونه سازی از QPushButton (کلاسی که دکمه فرمان بصورت کلاسیک را فراهم می سازد) ایجاد کنید. دکمه های عادی مثل : ok ،cancel ,apply ,yes, no. در تصویر زیر نحوه ی ظاهر شدن این ها روی سیستم عامل لینوکس نمایش داده شده است:

buttons

این دکمه ها شاید پرکاربردترین ویجت در هر رابط کاربری باشند. موقع کلیک کردن روی آن ها م یتوانید کامپیوتر را برای انجام عملیات لازم برنامه ریزی کنید. حتی می توانید عملیاتی را در عکس العمل به کلیک کاربر تعریف کنید.

labels

مورد بعدی labels یا برچسب ها می باشند که با QLabel می توان ساخت. برچسب ها راهی را برای نمایش اطلاعات در شکل متن یا تصویر ارائه می دهند.

labels

از برچسب هایی مثل این می توان برای تشریح هرچه بهتر هدف و استفاده ی رابط کاربری بهره برد. می توانید ظاهرشان را به چند روش تغییر دهید و همانطور که قبلا ملاحظه کردید حتی می توانند تگ های HTML را بپذیرند. برچسب ها همچنین برای تعیین کلیدهای mnemonic (با یک حرف زیر خط دار در یک عنصر از دیالوگ مثل یک آیتم از منوی کلیک راست مشخص می شوند که کاربر با فشردن کلید Alt و mnemonic key یا کاراکتر زیر خط دار باعث انتخاب آن آیتم می گردد مثلا Alt+a) بکار می روند.

line edits

یکی دیگر از ویجت های متداول و پرکاربرد line edit می باشد که یک فیلد تک خطی متنی است و با QLineEdit ایجاد می شود.

این ویجت ها موقع نیاز به ورودی متنی کاربر و دریافت آن همچنین ویرایش داده های متنی به کار می آیند. در زیر تصویر ظاهری این ویجت ها در سیستم عامل لینوکس نشان داده شده است:

line edit

line edit ها عملیات ساده ی ویرایش متنی مثل کپی و جایگذاری، کشیدن و انداختن (drag and drop) را فراهم می سازند. همانطور که ملاحظه می کنید در ردیف اول این اشیاء نوشته ای بدون محتوای قابل ویرایش موسوم به placeholder (برای مشخص کردن نوع نوشته ای که کاربر باید وارد کند)، نشان داده می شود.

combo box

Combo box ها ویجت پرکاربرد در وهله ی بعدی می باشند که با استفاده از کلاس QComboBox ایجاد می شوند و کاربرِ برنامه ی شما را با لیستی از گزینه های مختلف روبرو می کنند، در حالیکه کمترین فضای ممکن از صفحه نمایشتان را اشغال خواهد کرد. در پایین یک نمونه از لیست کشویی در سیستم عامل لینوکس نشان داده شده است:

combo box - مبانی PyQt

combo box ها فقط قابل خواندن هستند یعنی کاربر فقط می تواند یک مورد را انتخاب کند نه اینکه موردی را اضافه یا حذف کند. در صورتیکه combo box قابل ویرایش تعریف شده باشد، کاربر حق افزودن موارد جدید به لیست را دارد؛ خواه رشته ای باشد و یا از نوع pixmap (داده هایی که تصاویر را بوسیله ی آرایه ای مستطیل شکل از مقدار رنگ پیکسل، نمایش می دهند).

radio buttons

آخرین ویجت مهم که باید اینجا ذکر شود radio button ها هستند. این ویجت ها هم از کلاس QRadioButton ایجاد می شوند. هر شئ از این کلاس یک گزینه می باشد که فقط یکی از حالت های تیک زده شده و بدون تیک را می پذیرد. این ویجت ها هنگامی که می خواهید کاربر از چندین گزینه ی ممکن فقط بتواند یک گزینه را انتخاب کند به کار می روند. در شکل زیر تمام گزینه ها به صورت همزمان قابل رویت در صفحه هستند:

radio buttons - مبانی PyQt

در این گروه از radio button ها فقط یک دکمه در زمان مشخص می تواند تیک بخورد یا انتخاب شود. اگر کاربر یکی از گزینه های دیگر را انتخاب کرد یا تیک زد، همزمان گزینه ی تیک زده شده ی قبلی به صورت خودکار به حالت بدون تیک درمی آید.

PyQt5 دارای مجموعه ی بزرگی از ویجت هاست. در زمان تحریر این نوشته بیش از چهل نوع ویجت قابل استفاده برای رابط کاربری برنامه ها وجود دارد. تمام انواعی که خواندیم فقط مثال هایی کوچک از آن ها بود ولی همین موارد نیز توانایی و انعطاف PyQt5 را به خوبی نشان می دهند.

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


منبع: سایت Real Python

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری ساخت ماشین حساب گرافیکی با PyQt توصیه می‌کند:
نویسنده شوید

دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.