این مقاله یکی از قسمتهای سلسله مقالاتی برای آشنایی و آموزش زبان پایتون است. این مجموع پیش از این در ماهنامه شبکه منتشر شده اما به سایت جدید منتقل نشده بود. با توجه به اهمیت موضوع و درخواستهای مکرر خوانندگان، این مجموعه را به سایت مجله اضافه میکنیم و امیدواریم که مورد توجه علاقمندان قرار بگیرد.
برای مطالعه قسمتهای قبلی سلسله مقالات آموزش زبان برنامهنویسی پایتون اینجا کلیک کنید
import curses
myscreen = curses.initscr()
myscreen.border(0)
myscreen.addstr(10,12,»This Is\
The Simple Test . . .»)
myscreen.refresh()
myscreen.getch()
curses.endwin()
فهرست 1- نمونه ساده كار با كتابخانه curses
شکل 1- نتيجه اجرای كدهای فهرست يك
به ياد داشته باشيد شمارش سطرها و ستونهای صفحه نیز همواره از صفر آغاز خواهد شد. به عبارت دیگر، بالاترین نقطه در سمت چپ صفحه مختصاتی برابر 0,0 خواهد داشت.
حال که با اصول کلی کار با curses آشنا شدیم، بیایید از این کتابخانه برای ایجاد پوسته ارتباطی یک برنامه فرضی دفتر تلفن استفاده کنیم. در این مثال ما عملاً از کدهای مربوط به منطق درونی برنامه که برای افزودن نام و شماره به دفتر تلفن، جستوجوی نامها، حذف رکوردها و نحوه نگهداری و ذخیرهسازی دادهها صرفنظر کرده و تنها روش پیادهسازی يك پوسته یا رابط کاربری ساده را با curses توضیح خواهیم داد.
کدهای فهرست شماره 2 را در ویرایشگر دلخواهتان وارد کرده و با نام PhonebookUI.py ذخیره و اجرا کنید. در این حالت با صفحهای مشابه شكل 2 مواجه خواهید شد که در واقع منوی اصلی برنامه دفتر تلفن را نمایش میدهد. در این مرحله با فشردن کلیدهای 1، 2 و 3 میتوانید به منوهای مربوط به هر بخش وارد شده و عملیات مورد نظر را انجام دهید یا با وارد کردن عدد 0 از برنامه خارج شوید.
کدهای فهرست 2 از چهار بخش اساسی تشکیل شده است. در بخش نخست ما تنها import برنامه را برای استفاده از کتابخانه curses انجام دادهایم.
در بخش بعدی تابعی با نام MainMenu را تعریف کردهایم. این تابع ابتدا در خط 6 و با تابع ()erase صفحه نمایش (که قبلاً توسط curses تعریف شده است) را پاک میکند. حاشیه یا کادر در خط 7 فعال میشود. پس از آن و با استفاده از چندین تابع ()addstr شکل منوی اصلی را روی صفحه نمایش ترسیم کردهایم. در این بخش شما میتوانید فرم کامل تابع ()addstr را مشاهده کنید. این تابع در حالت عادی 4 آرگومان دریافت میکند. دو آرگومان نخست شماره سطر و ستون محل نوشته شدن متن هستند. آرگومان سوم، متن مورد نظر را تعریف میکند و در نهایت آرگومان چهارم رنگ متن را مشخص میکند. رنگهای مورد نظر برای استفاده در ()addstr به صورت جفت رنگهای پیشزمینه و پسزمینه هستند که در مورد نحوه تعریف آنها کمی بعدتر توضیح خواهیم داد.
در بخش سوم تعریف تابع GetKey آورده شده است. ما از این تابع برای دریافت پاسخ کاربر و واکنش به آن استفاده میکنیم. در خط 27 یک حلقه while تعریف شده است و تا زمانی که کاربر کلید 0 را فشار ندهد، به کار خود ادامه خواهد داد. اگر کاربر کلید 0 را بزند، این حلقه و در نتیجه اجرای تابع به پایان خواهد رسید و کنترل به بخش فراخواننده (در این مثال حلقه اصلی) بازگردانده میشود. همانطور که پیشتر هم گفتیم، در اینجا از پیادهسازی کامل برنامه صرفنظر کردهایم و تنها محلهایی را که باید کدهای منطق برنامه آورده شوند (خطهای 34،31 و 37) مشخص کردهایم. تنها نکته جديد در مورد تابع GetKey شاید استفاده از تابع ()ord باشد. تابع ()ord با دریافت یک رشته تک کاراکتری، عدد متناظر یونیکد آن را بازمیگرداند. استفاده از این تابع باعث میشود که برنامه بتواند فشرده شدن کلید 1 را در همه آرایشهای صفحه کلید (مثلاً فارسی یا عربی) درک کرده و به آن واکنش نشان دهد.بدنه اصلی بخش آخر کدهای ما است. در این بخش همانند مثال قبلی ابتدا در خط 40 صفحه نمایش راهاندازی شده است. خط 41 به curses اعلام میکند، ما قصد استفاده از رنگ در نوشتن متنها را داریم. در صورت عدم استفاده از تابع ()start_color هر تلاشی برای نمایش متون رنگی روی صفحه نمایش بی نتیجه خواهد ماند. نکته مهم دیگر این است که این دستور باید بعد از ایجاد و آمادهسازی صفحه نمایش توسط تابع ()initscr مورد استفاده قرار بگیرد.
شکل 2- نحوه نمايش يك منوی رنگی با كدهای فهرست 2
همانگونه که پیشتر هم اشاره شد برای ایجاد متون رنگی ما باید از جفت رنگهای مخصوص curses استفاده کنیم. خطوط 42 تا 45 این کار را انجام میدهد. برای تعریف جفتهای رنگی از تابع ()init_pair استفاده میکنیم که سه آرگومان را قبول میکند. آرگومان نخست شماره جفت رنگی را مشخص میکند. آرگومان دوم رنگ متن یا پیشزمینه را مشخصکرده و آرگومان سوم رنگ پسزمینه را تعیین میکند. برای معرفی این رنگها ما از ثابتهای نامدار خود کتابخانه curses استفاده کردهایم. همانگونه که مشاهده میشود، این ثابتها از ترکیب curses.COLOR_ با نام رنگ مورد نظر (با حروف بزرگ) به وجود آمدهاند.
تنها نکته جدید دیگر در این برنامه قالب try . . . except . . . finally است. این ساختار کنترلی معمولا برای جلوگیری از بوجود آمدن خطا در برنامهها و متوقف شدن برنامه استفاده میشود. فرم ساده استفاده از این دستورات بدین صورت است که پس از کلمه کلیدی try مجموعه دستوراتی که ممکن است باعث بروز خطا شوند آورده میشود. مجموعه کدهای مدیریت کننده خطا نیز پس از کلمه کلیدی except نوشته میشود. در نهایت هم دستوراتی که در هر صورت (چه با بروز خطا و چه بدون آن) باید اجرا شوند پس از کلمه کلیدی finally آورده میشود. مثال زیر نمونهای از کاربرد این دستور را نشان میدهد:
a=input()
b= input()
try:
c=a/b
except:
print "division by zero ."
c="Nothing"
finally:
print c
در بخشهای بعدی این مجموعه درباره این قالب بهصورت مفصل توضیح خواهیم داد.
فهرست 2- كدهايی برای نمايش منوی رنگی يك نرمافزار فرضی دفتر تلفن
هرچند مثالهای این بخش بسیار ساده و ابتدایی هستند، اما شما را با اصول اولیه آرایش متنها در صفحه و استفاده از رنگها و... آشنا میکند. شما هم به احتمال بسیار پیشتر به این نتیجه رسیدهاید که داشتن توانایی ایجاد چنین رابطهای کاربری آن هم در زبانهای اسکریپتنویسی مانند پایتون که بهصورت معمول از رابطهایگرافیکی استفاده نمیکنند بسیار حیاتی و لازم است و کتابخانه curses برای شروع و حتی در حالتی که با برنامههای حرفهای سروکار دارد گزینه مناسبی خواهد بود.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟