درس هفتم: یادگیری مبانی (برنامه‌ها و حلقه‌های رویداد)

18 فروردین 1399
pyqt-007

برنامه ها در PyQt

پایه ترین کلاسی که برای توسعه برنامه با رابط گرافیکی استفاده خواهید کرد QApplication می باشد. این کلاس در هسته ی هر برنامه PyQt قرار دارد و جریان کنترلی برنامه را همانند تنظیمات اصلی آن مدیریت می کند. در PyQt هر نمونه از QApplication به عنوان یک برنامه در نظر گرفته می شود. هر برنامه با رابط گرافیکی باید یک شئ از QApplication داشته باشد. برخی از مسئولیت های برنامه شامل موارد زیر است:

  • اداره کردن مقداردهی اولیه و نهایی شدن
  • فراهم کردن حلقه ی رویداد و اداره کردن خود رویدادها
  • مدیریت بیشتر تنظیمات در گستره ی سیستمی و برنامه
  • فراهم کردن دسترسی به اطلاعات سراسری مثل دایرکتوری برنامه، اندازه ی صفحه و...
  • تجزیه ی آرگومان های مشترک خط فرمان
  • توصیف حس و حال (ظاهر و عملکرد) برنامه
  • فراهم ساختن قابلیت های بومی سازی

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

یکی از مهم ترین مسئولیت های QApplication فراهم کردن حلقه ی رویداد و کل مکانیزم مدیریت رویدادهاست. باهم برویم تا نگاهی نزدیک تر به حلقه های رویداد داشته باشیم.

Event Loops یا رویدادهای حلقه در PyQt

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

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

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

در PyQt حلقه ی رویداد برنامه را می توانید توسظ فراخوانی متد ()_exec. در شئ QApplication اجرا کنید.

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

PyQt5 پایتون 3 را مورد هدف قرارمی دهد که کلیدواژه ی exec  را ندارد. هنوز هم کتابخانه دو متد که حلقه ی رویداد را آغاز می کنند، فراهم می کند.

در کل یعنی می توانید .exec_() را از کد خود حذف کرده و از .exec() بجای آن استفاده کنید.

در مورد یک رویداد برای به راه انداختن یک عکس العمل نیاز دارید که آن را با فعالیتی که می خواهید اجرا شود، متصل کنید. می توانید این اتصال را بوسیله ی سیگنال ها و مکانیزم شکاف ها که در درس آتی آموزش فارسی PyQt می خوانید، ایجاد کنید.


منبع: سایت Real Python

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

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

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