Curses
از PyLearn.com
| نکته ها و ترفند ها • ماژول ها و ابزار وابسته • نمونه پروژه و برنامه • پرسش و پاسخ |
فهرست مندرجات |
Curses چیست ؟
curses یک کتابخانه مبتنی بر ترمینال برای انجام اعمالی چون رنگ آمیزی صفحه و سهولت پردازش دستورات وارد شده از صفحه کلید و در حالت کلی ایجاد یک گرافیک ساده برای محیط متنی یا ترمینال می باشد . و با کمک این ابزار می توان اعمالی چون انتقال مکان نما , scroll کردن صفحه یا پاک کردن یک محدوده خاص و ... را انجام داد . ترمینال های مختلف از کد ها و دستورات مختلفی استفاده می کنند و برنامه نویسی و کار با آنها سخت می باشد اما ابزار curses جزئیات کار را از دید برنامه نویس مخفی می کند . این کتابخانه در اصل هنگامی که یونیکس BSD طراحی می شد ایجاد گردید که اکنون جای خود را به ncurses داده است .
ماژول کرسس (Curses ) پایتون
این ماژول توابع راحتی را برای کار با ترمینال و مکان نما در اختیار ما قرار می دهد و توابعی بسیار شبه به C را دارا می باشد . و برنامه نویسان زبان C که قبلا تجربه برنامه نویسی با کرسس را دارند براحتی می توانند تحت پایتون نیز برنامه گرافیکی ترمینال بنویسند . بزرگترین تفاوت کرسس پایتون و C آسان کردن کار و برنامه نویسی بوسیله ادغام برخی توابع C باهم می باشد . برای مثال در پایتون بجای توابع addstr , mvaddstr , mvwaddstr که همگی تقریبا کار یکسانی انجام می دهند یک تابع با نام addstr داریم .
شروع و خاتمه یک برنامه کرسس
ابتدا باید با دستور import ماژول مورد نیاز را اضافه کنید سپس قبل از انجام هر کاری باید کرسس را فعال (init) کنید این عمل با دستور initscr انجام می گیرد که نوع ترمینال را تشخیص داده و همه تنظیمات مورد نیاز را به ترمینال ارسال کرده و چندین ساختمان داده درونی را هم ایجاد می کند . اگر این دستور با موفقیت اجرا شود یک شی از نوع پنجره را که همان پنجرا جاری است را برگشت می دهد معمولا متغییر حاوی این شی stdscr نامیده می شود .
البته هدف از بیان این کد فقط ارائه یک نمونه می باشد و برای آشنایی با منطق و دلایل هر دستور باید به مستندات زبان پایتون مراجعه کنید برای مثال همان کد بالایی را در حالتی دیگر مشاهد کنید :
معمولا در برنامه های کرسس , نمایش اتوماتیک کلید ها فشرده شده را در پنجره از کار انداخته می شود و این تظمین کننده دریافت اطلاعات و نمایش در صورت نیاز می باشد برای این کار از دستور noecho استفاده کنید :
برنامه ها همچنین باید معمولا در قبال دستورات و کاراکتر های وارد شده بدون نیاز به زدن کلید enter عکس العمل نشان دهند که اصطلاحا این حالت cbreak نامیده می شود :
ترمینال ها معمولا کلیدهای خاص چون کلیدهای مکان نما و کلید هایی چون Home , Page Up و .. را به عنوان یک توالی یا آرایه (2 تایی) برگشت می دهند و شما باید برنامه ای بنویسید که این توالی را نادیده گرفته و بطور طبیعی کار و این کلید ها را شناسایی کند . کرسس این کار را برای شما انجام می دهد و کلید های خاصی چون curses.KEY_LEFT را بدرستی برمی گرداند برای فعال کردن این ویژگی باید از دستور keypad استفاده کنید :
برای خاتمه دادن به کرسس و برگشت به حالت معمول از دستور endwin ستفاده می شود :
نکته
یک اشتباه معمول در زمان خطایابی (debug) برنامه های کرسس قاطی کردن ترمینال به علت برنگشتن آن به حالت معمول و خاتمه دادن کرسس می باشد . در پایتون معمولا این اتفاق زمانی می افتد که شما یک کد اشتباه دارید و این کد به درستی اجرا و خاتمه نمی یابد برای مثال فرض کنید شما noecho را فعال کرده اید ولی برنامه شما و دستور endwin به درستی اجرا نشده و تغییرات اعمال شده را به حالت معمول برگشت نداده پس شما نخواهید توانست دستورات تایپ شده را ببینید !! برای جلوگیری از این امر می توانید از ماژول curses.warpper استفاده کنید .

