021-71053903 [email protected] پشتیبانی از شنبه تا چهارشنبه ساعت 9 الی 16

مهندسی فریم ورک کیوی

در این مقاله ما توضیح می دهیم که فریم ورک کیوی از لحاظ معماری و مهندسی نرم افزار چگونه طراحی شده است.

برای اینکه بهتر کد هایی که در محیط کیوی وارد می کنید درک کنید بهتر است با معماری کیوی آشنا باشید.

مهندسی فریم ورک کیوی از low level تا high level

ارايه دهندگان اصلی و ارایه دهندگان ورودی یا Core Providers and Input Providers

ارایه دهنده های اصلی در مهندسی فریم ورک کیوی

کیوی یک سری وظایف که آنها را خود وظایف اصلی (core tasks) می نامد مثل :

باز کردن پنجره ، نمایش تصویر و متن ، پخش صوتی ، گرفتن تصاویر از دوربین ، تصحیح املایی و…

امکاناتی که ذکر شد را کیوی در اختیار شما قرار می دهد و این به عهده ی شماست که چگونه از آنها استفاده کنید.

این کار که در مهندسی فریم ورک کیوی انجام شده تا به ما کمک می کند که راحت تر در توسعه‌ی API قدم بردارید.

از همه بهتر، این کار باعث می شود کیوی به ما اجازه دهد تا از تامین کننده ها ناظر هر سناریویی که اپ شما درحال اجرای آن است استفاده شود برای مثال:

در OS X , linux , windows , android و … API های متفاوت و بومی برای اجرای وظایف اصلی یا اولیه وجود دارد.

یک کد که از API خاصی برای صحبت کردن با سیستم اپراتور(os) از یک طرف و kivy از طرف دیگر استفاده می کند.

که اصطلاحا به آن ارایه دهنده‌ی اصلی یا core provider گفته می‌شود.

توضیحات بالا کلیت ساختار و معماری فریم ورک کیوی را نشان می دهد

مزیت های استفاده از ارایه دهنده های اصلی

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

  1. عملکرد سیستم اپراتور بالا می رود
  2. سیستم کار آمد تر می شود

این اقدام به کاربر یک حق انتخاب می‌دهد .

بعلاوه با استفاده از کتابخانه هایی که در هر پلتفرم وجود دارد به صورت موثر اندازه توزیع kivy کاهش می یابد و بسته بندی به آسانی انجام می شود.

با این اقدام همچنین انتقال kivy به پلتفرم های دیگر راحت تر انجام می‌شود.

پلتفرم های اندروید به صورت گسترده‌ای از این روش بهره مند شده اند.

ارایه دهنده های ورودی در مهندسی فریم ورک کیوی

ما از همین مفهوم برای مدیریت ورودی پیروی می کنیم.

ارایه دهنده یا تامین کننده های ورودی یک کدی است که به دستگاه ورودی کمک می کند.

مانند trackpad های اپل و یا شبیه ساز های موس (input).

اگر شما نیازمند کمک بیشتر به قطعه ورودی هستید می‌توانید یک به راحتی یک class اضافه کنید.

class داده های ورودی شما را می‌خواند و آنهارا به داده های پایه‌ای kivy تبدیل می کند.

حال که فهمیدید این ارایه دهنده ها چیستند، می‌خواهیم با چند تا از این ارایه دهنده ها در زمینه های مختلف و اینکه چرا در مهندسی فریم ورک کیوی به کار برده شده اند آشنایی پیدا کنیم

ارایه دهنده گرافیکی در مهندسی فریم ورک کیوی

فریم ورک کیوی سرویس های گرافیکی خود را از طرف API رندر گرافیکی OpenGL ES می‌گیرد.

که در ساده ترین بخش کیوی دستورات ترسیم سخت افزاری را با استفاده از OpenGL ES صادر می کند.

نوشتن کد OpenGL اما به ویژه برای تازه واردان می تواند کمی سخت و گیج کننده باشد.

به همین دلیل کیوی API گرافیکی ارایه می دهد که به آسانی با استفاده از استعاره هایی مانند Canvas, Rectangle) می توانید شکل رسم کنید.

همه ویجت های kivy خود از این API گرافیکی استفاده می کنند که به دلایل عملکرد در سطح C اجرا می شود.

یکی دیگر از مزیت های API گرافیکی توانایی آن در بهینه سازی خودکار دستورات طراحی است که کد شما آنها را صادر می کند.

این امر به ویژه در صورتی که متخصص تنظیم OpenGL نباشید ، بسیار مفید است.

این باعث می شود در بسیاری از موارد کد ترسیم شما کارآمدتر شود.

البته اگر ترجیح می دهید هنوز می توانید از دستورات خام OpenGL استفاده کنید .

و همانطور که ذکر شد برای افراد نوپا بسیار سخت و پیچیده است.

نسخه مورد نظر ما در همه دستگاه ها( OpenGL 2.0 ES GLES2) است.

بنابراین اگر می خواهید سازگار با کراس پلتفرم باشید ، ما به شما توصیه می کنیم فقط از توابع GLES2 استفاده کنید.

ارایه دهنده‌ی هسته یا (core) در مهندسی فریم ورک کیوی

این بسته کد شامل چندین ارایه دهنده مختلف می باشد.

که این ارایه دهنده ها از آن قبیل افزونه ها می باشند که در مقاله نصب فریم ورک کیوی توضیح دادیم.

Clock

یکی از مجموعه کد هایی که سرویس های زمان را می‌دهد.

و جزو افزونه هایی است که امکان دارد به هیچ وجه روی ویندوز نصب نشود .

یا حتی در صورتی که نصب شود اصلا کار نکند.

ولی کاربرد اصلی این ماژول برای برنامه ریزی و زمانبندی هر چیز به خصوص اجرای کد ها است.

که این تایمر ها به صورت دوره‌ای پشتیبانی می شوند.

Cache

زمانی که شما چیزی را مدام استفاده می کنید نیازی نیست آن را مدام بنویسید.

بلکه می‌توانید از کلاس های ما استفاده کنید .

Gesture Detection

این مازول برای تشخیص ژست است که کیوی ارسال می‌کند.

این ماژول در مهندسی فریم ورک کیوی آنقدر پیشرفته عمل می‌کند که در صورتی که به خوبی آموزش ببیند حتی میتواند با رسم و پردازش اشکالی چون مستطیل و دایره انواع سکته ها را تشخیص دهد.

kivy language

بسته کد زبان کیوی یکی از پکیج هایی است که اکثر مواقع به طور پیش فرض با کیوی بر روی سیستم نصب می‌شود.

از بسته کد های زبان کیوی برای توصیف واسط های آسان و کار آمد استفاده می شود .

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

properties

این بسته کد تنظیمات عادی از پایتون نیست که فکر کنید بدانید .

بلکه آنها کلاس های خاص خود پایتون هستند.

که کد ها و ویجت های شما را با توضیحات رابط کاربر پیوند می‌دهند.

UIX (ابزارک ها و چیدمان ها) یا layouts & widgets

ماژول UIX شامل ابزارک ها و چیدمان هایی است که معمولاً از آنها استفاده می کنید تا به سرعت بتوانید یک رابط کاربری ایجاد کنید.

ابزارک ها یا widgets

ابزارک ها عناصر رابط کاربری هستند که شما به برنامه خود اضافه می کنید تا نوعی کارایی ارائه شود.

آنها ممکن است دیده شوند یا نشوند.

نمونه ها می توانند یک مرورگر فایل ، دکمه ها ، اسلایدر ها ، لیست ها و غیره باشند.

ابزارک ها MotionEvents را دریافت می کنند.

چیدمان یا layouts

شما برای ترتیب ویجت ها یا ابزارک ها(widgets) از چیدمان یا لایوت (layouts) استفاده می کنید.

مطمئناً می توانید موقعیت های ویجت خود را محاسبه کنید ، اما اغلب استفاده از یکی از لایوت های آماده ما راحت‌تر است.

نمونه های آن می تواند لایوت گرید (grid layouts) ها یا لایوت جعبه (box layouts) باشد.

همچنین می توانید چیدمان های لایه را تهیه کنید.

ماژول ها (modules)

اگر تاکنون از یک مرورگر وب مدرن استفاده کرده اید و آن را با برخی از افزودنی ها سفارشی کرده اید.

از قبل ایده اصلی کلاسهای ماژول کیوی را می دانید.

ماژول ها را می توان برای تزریق عملکرد به برنامه های Kivy استفاده کرد ، حتی اگر نویسنده اصلی آن را شامل نشود.

به عنوان مثال ماژولی در معماری فریم ورک کیوی خواهد بود که همیشه (FPS (frame per second (تعداد فریم بر ثانیه) برنامه فعلی و برخی نمودارها را که FPS را به مرور زمان نشان می دهد ، نشان می دهد.

همچنین می توانید ماژول های خود را بنویسید.

کلید های ورودی (لمسی) یا (Input Events (touch در مهندسی فریم ورک کیوی

فریم ورک کیوی kivy انواع مختلفی از منابع ورودی دارد که شامل :

ورودی لمسی (touch)،موس TUIO ، mouse و…. را در بر می‌گیرد.

و البته اون چیزی که همه‌ی این ورودی هارو با هم مشترک می کنه اینه که می‌توانید شما یک موقعیت 2D در صفحه ایجاد کنید و با هر ورودی فردی منطبق کنید.

دستگاه های ورودی دیگری مانند شتاب سنج وجود دارد که شما به راحتی نمی توانید موقعیت 2D را به عنوان مثال شیب دستگاه خود پیدا کنید.

این نوع ورودی بطور جداگانه اداره می شود. در شکل زیر انواع قبلی را شرح می دهیم.

همه این نوع ورودی ها توسط نمونه هایی از کلاس Touch () نمایش داده می شوند.

توجه داشته باشید که این موضوع فقط به لمس انگشت اشاره نمی کند ، بلکه انواع دیگر ورودی نیز وجود مثل موس دارد.

ما فقط به خاطر سادگی آن را لمس نام می‌بریم.

برای چیزی که رابط کاربری یا صفحه نمایش شما آن را لمس کنید.

یا موضوع می تواند در یکی از سه حالت باشد.

وقتی یک لمس وارد یکی از این حالت ها می شود ، به برنامه شما اطلاع داده می شود که این رویداد رخ داده است. سه حالت لمسی که در آن قرار دارد عبارتند از:

پایین یا Down در kivy

تعداد لمس فقط یک باراست و در همان لحظه ای که برای اولین بار ظاهر می شود ، پایین می رود که به طور مثال انگار شما کلیدی را به سمت پایین فشار دادید.

حرکت یا Move در kivy

لمس می تواند در این حالت برای مدت زمان نامحدودی باشد.

حرکت در زمانی که موقعیت 2D یک لمس تغییر کند اتفاق می افتد.

بالا یا Up در kivy

لمس حداکثر یک بار ، یا هرگز اتفاق نمی‌افتد.

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

کلید های ورودی و ویجت ها یا ابزارک ها یا Events Input & Widgets

ویجت ها در برنامه نویسی گرافیکی یا GUI به رابط هایی برای گرفتن ورودی های مشخص گفته میشود.

این ویجت ها در مهندسی فریم ورک کیوی به شکل زیر توصیف می شوند :

یک یا چند ویجت به عنوان والدین یا حالا تنه یک درخت در راس هرم قرار دارند .

و یکسری هم فرزند یا شاخه که به همین ترتیب گسترش پیدا می کنند هستند .

این مثال را ما برای در بهتر زدیم و گر نه هیچ ربطی دیگری به معماری فریم ورک کیوی kivy Architectural ندارد.

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

kivy کد را دریافت کرده و بسته به شرایط کلید که شما تایین می کنید که عبارتند از:

on_touch_up

on_touch_down

on_touch_move

و لازم به ذکر است که هر ویجت اگر از پس کاری بر نیاید آن را به زیر شاخه خود می دهد.

که در کد زیر این پدیده را مشاهده می‌کنید:

def on_touch_down(self, touch):

for child in self.children[:]:

if child.dispatch(‘on_touch_down’, touch):

return True

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

اغلب اوقات شما میخواهید لمس را در قسمتی از صفحه نمایش محدود کنید شما می توانید از متود زیر استفاده کنید:

widget’s collide_point()

می‌توانید برای اطلاعات بیشتراز معماری فریم ورک کیوی به kivy.org مراجعه فرمایید.

مقالات بیشتر :

کتابخانه کیوی (kivy)

فریم ورک کیوی kivy

نصب فریم ورک کیوی

محمد مهدی عینی

17 مطلب منتشر شده

محمدمهدی عینی ، علاقه مند به برنامه نویسی و علوم کامپیوتری ، برنامه نویس زبان برنامه نویسی پایتون ، مدرس برنامه نویسی GUI تحت ویندوز ، دانش آموز دبیرستان استعداد های درخشان باهنر 1

درباره این مطلب نظر دهید !

محصولات فروش پایتونی ها

%60
تخفیف

آموزش فیگما (Figma)

30,000 تومان
3
%69
تخفیف

آموزش برنامه نویسی پایتون

35,000 تومان
2