curses --- مدیریت پایانه برای نمایشگرهای سلول‌نویسه‌ای (character-cell displays)

کد منبع: Lib/curses


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

اگرچه curses بیشترین کاربرد را در محیط یونیکس دارد، نسخه‌هایی برای ویندوز، DOS و احتمالاً سیستم‌های دیگر نیز در دسترس هستند. این ماژول توسعه به‌گونه‌ای طراحی شده است که با API کتابخانه ncurses مطابقت داشته باشد؛ ncurses یک کتابخانه curses متن‌باز است که روی لینوکس و نسخه‌های BSD یونیکس میزبانی می‌شود.

دسترس‌پذیری: not Android, not iOS, not WASI.

این ماژول در سکوهای موبایل یا سکوهای WebAssembly پشتیبانی نمی‌شود.

این یک ماژول اختیاری است. اگر در نسخه CPython شما موجود نیست، به مستندات توزیع‌کننده خود (یعنی هر کسی که پایتون را در اختیار شما قرار داده است) مراجعه کنید. اگر شما توزیع‌کننده هستید، نیازمندی‌های ماژول‌های اختیاری را ببینید.

توجه

Whenever the documentation mentions a character it can be specified as an integer, a one-character Unicode string or a one-byte byte string. An integer is the code of a single encoded byte, optionally combined with attributes and a color pair, as returned by window.inch().

هرگاه در مستندات به یک رشته‌ی نویسه‌ای اشاره شود، می‌توان آن را به‌صورت یک رشته‌ی یونیکد یا یک رشته‌ی بایت مشخص کرد.

توجه

Whether curses may be used from several threads depends on the underlying library and how it was built. In many implementations, including the default build of ncurses, the screen state is shared and not thread-safe; since the blocking and refresh methods (such as getch() and refresh()) release the GIL, unsynchronized use from several threads can then crash the interpreter. Serialize the calls.

همچنین ملاحظه نمائید

ماژول curses.ascii

ابزارهایی برای کار با نویسه‌های ASCII، صرف‌نظر از تنظیمات locale (locale) شما.

ماژول curses.panel

یک افزونه‌ی پشته‌ی پنل که به پنجره‌های curses عمق می‌بخشد.

ماژول curses.textpad

ابزارک متنی قابل‌ویرایش برای curses با پشتیبانی از کلیدبندی‌های مشابه Emacs.

برنامه‌نویسی Curses با پایتون

مطلب آموزشی درباره‌ی استفاده از curses در پایتون، نوشته‌ی Andrew Kuchling و Eric Raymond.

توابع

ماژول curses استثنای زیر را تعریف می‌کند:

exception curses.error

استثنایی که هنگام برگرداندن خطا توسط تابعی از کتابخانه curses پرتاب می‌شود.

توجه

هرگاه آرگومان‌های x یا y برای یک تابع یا متد اختیاری باشند، مقدار پیش‌فرض آن‌ها موقعیت فعلی مکان‌نما خواهد بود. هرگاه attr اختیاری باشد، مقدار پیش‌فرض آن A_NORMAL خواهد بود.

ماژول curses توابع زیر را تعریف می‌کند:

curses.assume_default_colors(fg, bg, /)

اجازه استفاده از مقادیر پیش‌فرض برای رنگ‌ها در پایانه‌هایی که این قابلیت را پشتیبانی می‌کنند. از این برای پشتیبانی از شفافیت در برنامه‌تان استفاده کنید.

  • رنگ‌های پیش‌فرض پیش‌زمینه/پس‌زمینه پایانه را به شماره‌ی رنگ -1 اختصاص می‌دهد. بنابراین init_pair(x, COLOR_RED, -1) جفت x را به‌صورت قرمز روی پس‌زمینه پیش‌فرض مقداردهی اولیه می‌کند و init_pair(x, -1, COLOR_BLUE) جفت x را به‌صورت پیش‌زمینه پیش‌فرض روی پس‌زمینه آبی مقداردهی اولیه می‌کند.

  • تعریف جفت‌رنگ 0 را به (fg, bg) تغییر دهید.

این یک افزونه برای ncurses است.

اضافه شده در نسخه‌ی 3.14.

curses.baudrate()

سرعت خروجی پایانه را بر حسب بیت بر ثانیه برمی‌گرداند. در شبیه‌سازهای نرم‌افزاری پایانه، این سرعت مقدار ثابت بالایی خواهد داشت. به دلایل تاریخی گنجانده شده است؛ در گذشته، برای نوشتن حلقه‌های خروجی جهت تأخیرهای زمانی و گاهی برای تغییر رابط‌ها بسته به سرعت خط استفاده می‌شد.

curses.beep()

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

curses.can_change_color()

برگرداندن True یا False، بسته به اینکه برنامه‌نویس بتواند رنگ‌هایی را که پایانه نمایش می‌دهد تغییر دهد.

curses.cbreak()

وارد حالت cbreak می‌شود. در حالت cbreak (که گاهی به آن حالت «rare» می‌گویند) بافرینگ خطی معمول tty غیرفعال می‌شود و نویسه‌ها برای خوانده‌شدن به‌صورت یکی‌یکی در دسترس قرار می‌گیرند. با این حال، برخلاف حالت raw، نویسه‌های ویژه (وقفه، خروج، تعلیق و کنترل جریان) اثرات خود را بر راه‌انداز tty و برنامه فراخوان حفظ می‌کنند. اگر ابتدا raw() و سپس cbreak() فراخوانی شود، پایانه در حالت cbreak باقی می‌ماند.

curses.color_content(color_number)

شدت کامپوننت‌های قرمز، سبز و آبی (RGB) در رنگ color_number را برمی‌گرداند. color_number باید بین 0 و COLORS - 1 باشد. یک تاپل سه‌تایی شامل مقادیر R، G، B برای رنگ داده‌شده برمی‌گرداند؛ این مقادیر بین 0 (بدون کامپوننت) و 1000 (حداکثر مقدار کامپوننت) خواهند بود. اگر رنگ پشتیبانی نشود، یک استثنا پرتاب می‌کند.

curses.color_pair(pair_number)

مقدار ویژگی را برای نمایش متن در جفت رنگ مشخص‌شده برمی‌گرداند. تنها از نخستین ۲۵۶ جفت رنگ پشتیبانی می‌شود. این مقدار ویژگی را می‌توان با A_STANDOUT، A_REVERSE و سایر ویژگی‌های A_* ترکیب کرد. pair_number() متقابل این تابع است.

curses.curs_set(visibility)

وضعیت مکان‌نما را تنظیم می‌کند. می‌توان visibility را روی 0، 1، یا 2 برای حالت‌های نامرئی، عادی، یا بسیار نمایان تنظیم کرد. اگر پایانه از حالت نمایش درخواستی پشتیبانی کند، وضعیت قبلی مکان‌نما را برمی‌گرداند؛ در غیر این صورت استثنایی پرتاب می‌کند. در بسیاری از پایانه‌ها، حالت «نمایان» یک مکان‌نمای خط زیر و حالت «بسیار نمایان» یک مکان‌نمای بلوکی است.

curses.def_prog_mode()

حالت فعلی پایانه را به‌عنوان حالت «برنامه» ذخیره می‌کند، حالتی که برنامه‌ی در حال اجرا از curses استفاده می‌کند. (همتای آن حالت «پوسته» است، برای زمانی که برنامه در curses نیست.) فراخوانی‌های بعدی reset_prog_mode() این حالت را بازمی‌گردانند.

curses.def_shell_mode()

حالت جاری پایانه را به‌عنوان حالت «پوسته» ذخیره می‌کند، حالتی که برنامه‌ی در حال اجرا از curses استفاده نمی‌کند. (حالت متناظر آن، حالت «برنامه» است، زمانی که برنامه از قابلیت‌های curses استفاده می‌کند.) فراخوانی‌های بعدی reset_shell_mode() این حالت را بازگردانی می‌کند.

curses.delay_output(ms)

یک مکث ms میلی‌ثانیه‌ای در خروجی درج کنید.

curses.doupdate()

صفحه فیزیکی را به‌روزرسانی می‌کند. کتابخانه‌ی curses دو ساختار داده را نگه می‌دارد: یکی نشان‌دهنده‌ی محتویات فعلی صفحه فیزیکی و دیگری یک صفحه مجازی است که وضعیت بعدی مورد نظر را نشان می‌دهد. تابع doupdate() صفحه فیزیکی را به‌روزرسانی می‌کند تا با صفحه مجازی مطابقت داشته باشد.

صفحه‌ی مجازی می‌تواند پس از انجام عملیات نوشتن مانند addstr() روی یک پنجره، با یک فراخوانی noutrefresh() به‌روزرسانی شود. فراخوانی معمول refresh() صرفاً noutrefresh() و به‌دنبال آن doupdate() است؛ اگر لازم است چندین پنجره را به‌روزرسانی کنید، می‌توانید با انجام فراخوانی‌های noutrefresh() روی تمام پنجره‌ها و به‌دنبال آن‌ها یک doupdate()، سرعت عملکرد را افزایش دهید و شاید سوسوی صفحه را کاهش دهید.

curses.echo()

وارد حالت بازتاب (echo mode) شوید. در حالت بازتاب، هر نویسه‌ی ورودی به محض وارد شدن، روی صفحه بازتاب داده می‌شود.

curses.endwin()

کتابخانه را از مقداردهی اولیه خارج می‌کند و پایانه را به وضعیت عادی بازمی‌گرداند.

curses.erasechar()

نویسه حذف فعلی کاربر را به‌عنوان یک شیء bytes یک‌بایتی برمی‌گرداند. در سیستم‌عامل‌های یونیکسی، این یک ویژگی از tty کنترل‌کننده برنامه curses است و توسط خود کتابخانه curses تنظیم نمی‌شود.

curses.filter()

روال filter()، در صورتی که استفاده شود، باید پیش از فراخوانی initscr() فراخوانی شود. اثر آن این است که در حین راه‌اندازی، LINES روی 1 تنظیم می‌شود؛ قابلیت‌های clear، cup، cud، cud1، cuu1، cuu و vpa غیرفعال می‌شوند؛ و رشته‌ی home به مقدار cr تنظیم می‌شود. اثر آن این است که مکان‌نما به خط جاری محدود می‌شود و به‌روزرسانی‌های صفحه نیز به خط جاری محدود هستند. می‌توان از این امکان برای فعال‌سازی ویرایش خط به‌صورت نویسه‌به‌نویسه بدون دست زدن به سایر بخش‌های صفحه استفاده کرد.

curses.flash()

صفحه را چشمک بزنید. یعنی آن را به حالت ویدیوی معکوس (reverse-video) تغییر دهید و سپس در بازه‌ی کوتاهی آن را به حالت پیشین برگردانید. برخی افراد چنین چیزی را به‌عنوان «زنگ قابل مشاهده (visible bell)» به سیگنال جلب توجه شنیداری تولیدشده توسط beep() ترجیح می‌دهند.

curses.flushinp()

تمام بافرهای ورودی را تخلیه می‌کند. این کار هرگونه پیش‌تایپ (typeahead) را که کاربر تایپ کرده است و برنامه هنوز آن را پردازش نکرده است، دور می‌ریزد.

curses.getmouse()

پس از اینکه getch() KEY_MOUSE را برای اعلام یک رویداد ماوس برگرداند، باید این متد فراخوانی شود تا رویداد ماوس در صف بازیابی شود؛ این رویداد به‌صورت یک ۵-تایی (id, x, y, z, bstate) نمایش داده می‌شود. id یک مقدار شناسه برای تمایز دستگاه‌های متعدد است، و x، y، z مختصات رویداد هستند. (z در حال حاضر استفاده نشده است.) bstate یک مقدار عدد صحیح است که بیت‌های آن برای نشان دادن نوع رویداد تنظیم خواهند شد و برابر با OR بیتی یک یا چند مورد از ثابت‌های زیر خواهد بود، که در آن n شماره‌ی دکمه از ۱ تا ۵ است: BUTTONn_PRESSED، BUTTONn_RELEASED، BUTTONn_CLICKED، BUTTONn_DOUBLE_CLICKED، BUTTONn_TRIPLE_CLICKED، BUTTON_SHIFT، BUTTON_CTRL، BUTTON_ALT.

تغییر یافته در نسخه‌ی 3.10: ثابت‌های BUTTON5_* اکنون در صورتی که توسط کتابخانه curses زیرین ارائه شده باشند، در دسترس قرار می‌گیرند.

curses.getsyx()

مختصات فعلی مکان‌نما صفحه‌ی مجازی را به‌صورت یک تاپل (y, x) برمی‌گرداند. اگر leaveok در حال حاضر True باشد، سپس (-1, -1) را برمی‌گرداند.

curses.getwin(file)

داده‌های مرتبط با پنجره را که در پرونده توسط یک فراخوانی قبلی window.putwin() ذخیره شده‌اند، می‌خواند. سپس این روال با استفاده از آن داده‌ها، پنجره‌ی جدیدی را ایجاد و مقداردهی اولیه می‌کند و شیء پنجره‌ی جدید را برمی‌گرداند. آرگومان file باید یک شیء پرونده باشد که برای خواندن در حالت دودویی باز شده است.

curses.has_colors()

اگر پایانه بتواند رنگ‌ها را نمایش دهد، True را برمی‌گرداند؛ در غیر این صورت، False را برمی‌گرداند.

curses.has_extended_color_support()

اگر ماژول از رنگ‌های گسترش‌یافته پشتیبانی کند، True را برمی‌گرداند؛ در غیر این صورت، False را برمی‌گرداند. پشتیبانی از رنگ‌های گسترش‌یافته، بیش از ۲۵۶ جفت‌رنگ را برای پایانه‌هایی که از بیش از ۱۶ رنگ پشتیبانی می‌کنند (برای مثال، xterm-256color) امکان‌پذیر می‌سازد.

پشتیبانی رنگی گسترده به ncurses نسخه 6.1 یا جدیدتر نیاز دارد.

اضافه شده در نسخه‌ی 3.10.

curses.has_ic()

اگر پایانه قابلیت‌های درج و حذف نویسه را داشته باشد، True را برمی‌گرداند. این تابع فقط به دلایل تاریخی گنجانده شده است، زیرا همه نرم‌افزارهای شبیه‌ساز پایانه امروزی چنین قابلیت‌هایی دارند.

curses.has_il()

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

curses.has_key(ch)

مقدار کلید ch را می‌گیرد و اگر نوع پایانه‌ی جاری کلیدی با آن مقدار را بشناسد، True را برمی‌گرداند.

curses.halfdelay(tenths)

برای حالت نیمه‌تأخیر (half-delay) استفاده می‌شود؛ این حالت شبیه حالت cbreak است، بدین معنا که نویسه‌های تایپ‌شده توسط کاربر بلافاصله در دسترس برنامه قرار می‌گیرند. با این حال، پس از مسدود شدن به مدت tenths دهم ثانیه، اگر چیزی تایپ نشده باشد، یک استثنا پرتاب می‌شود. مقدار tenths باید عددی بین 1 و 255 باشد. برای خروج از حالت نیمه‌تأخیر از nocbreak() استفاده کنید.

curses.init_color(color_number, r, g, b)

تعریف یک رنگ را تغییر می‌دهد؛ شماره رنگی که باید تغییر کند و سپس سه مقدار RGB (برای میزان کامپوننت‌های قرمز، سبز و آبی) را دریافت می‌کند. مقدار color_number باید بین 0 و COLORS - 1 باشد. هر یک از r، g و b باید مقداری بین 0 و 1000 باشد. هنگامی که از init_color() استفاده شود، تمام موارد آن رنگ روی صفحه بلافاصله به تعریف جدید تغییر می‌کنند. این تابع در بیشتر پایانه‌ها هیچ عملیاتی انجام نمی‌دهد؛ تنها زمانی فعال است که can_change_color() مقدار True را برگرداند.

curses.init_pair(pair_number, fg, bg)

تعریف یک جفت‌رنگ را تغییر می‌دهد. این تابع سه آرگومان دریافت می‌کند: شماره‌ی جفت‌رنگی که باید تغییر کند، شماره‌ی رنگ پیش‌زمینه و شماره‌ی رنگ پس‌زمینه. مقدار pair_number باید بین 1 و COLOR_PAIRS - 1 باشد (جفت‌رنگ 0 فقط با use_default_colors() و assume_default_colors() قابل تغییر است). مقدار آرگومان‌های fg و bg باید بین 0 و COLORS - 1 باشد، یا پس از فراخوانی use_default_colors() یا assume_default_colors()، -1 باشد. اگر جفت‌رنگ پیش‌تر مقداردهی اولیه شده باشد، صفحه تازه‌سازی می‌شود و تمام موارد استفاده از آن جفت‌رنگ به تعریف جدید تغییر می‌کنند.

curses.initscr()

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

برای آگاهی از هشداری درباره‌ی فراخوانی آن پیش از این تابع، setupterm() را ببینید.

توجه

اگر در باز کردن پایانه خطایی رخ دهد، ممکن است کتابخانه curses زیربنایی باعث خروج مفسر شود.

curses.intrflush(flag)

اگر flag برابر True باشد، فشردن یک کلید وقفه (وقفه، قطع یا خروج) تمام خروجی موجود در صف راه‌انداز پایانه را تخلیه می‌کند. اگر flag برابر False باشد، هیچ تخلیه‌ای انجام نمی‌شود.

curses.is_term_resized(nlines, ncols)

اگر resize_term() ساختار پنجره را تغییر دهد، True و در غیر این صورت False را برمی‌گرداند.

curses.isendwin()

اگر endwin() فراخوانی شده باشد (یعنی کتابخانه curses از مقداردهی اولیه خارج شده باشد)، True را برمی‌گرداند.

curses.keyname(k)

نام کلید با شماره‌ی k را به‌عنوان یک شیء bytes برمی‌گرداند. نام کلیدی که یک نویسه‌ی ASCII قابل‌چاپ تولید می‌کند، همان نویسه‌ی کلید است. نام یک ترکیب کلید کنترل، یک شیء bytes دو بایتی است که از یک نویسه‌ی caret (b'^') و به‌دنبال آن نویسه‌ی ASCII قابل‌چاپ متناظر تشکیل شده است. نام یک ترکیب کلید Alt (۱۲۸--۲۵۵) یک شیء bytes است که از پیشوند b'M-' و به‌دنبال آن نام نویسه‌ی ASCII متناظر تشکیل شده است.

اگر k منفی باشد، یک ValueError پرتاب می‌کند.

curses.killchar()

نویسه حذف خط فعلی کاربر را به‌صورت یک شیء bytes یک‌بایتی برمی‌گرداند. در سیستم‌عامل‌های یونیکسی، این یک ویژگی از tty کنترل‌کننده برنامه curses است و توسط خود کتابخانه curses تنظیم نمی‌شود.

curses.longname()

یک شیء بایتی حاوی فیلد نام بلند terminfo را برمی‌گرداند که پایانه فعلی را توصیف می‌کند. حداکثر طول یک توصیف پرجزئیات ۱۲۸ نویسه است. این فیلد فقط پس از فراخوانی initscr() تعریف می‌شود.

curses.meta(flag)

اگر flag برابر True باشد، اجازه داده می‌شود که نویسه‌های ۸ بیتی ورودی داده شوند. اگر flag برابر False باشد، فقط اجازه داده می‌شود که نویسه‌های ۷ بیتی ورودی داده شوند.

curses.mouseinterval(interval)

حداکثر زمان بر حسب میلی‌ثانیه که می‌تواند بین رویدادهای فشردن و رها کردن سپری شود تا آن‌ها به‌عنوان یک کلیک شناخته شوند را تنظیم می‌کند و مقدار فاصله پیشین را برمی‌گرداند. مقدار پیش‌فرض ۱۶۶ میلی‌ثانیه، یا یک‌ششم ثانیه است. برای دریافت مقدار فاصله بدون تغییر آن، از یک interval منفی استفاده کنید.

curses.mousemask(mousemask)

رویدادهای ماوس را برای گزارش‌شدن تنظیم می‌کند و یک تاپل (availmask, oldmask) را برمی‌گرداند. availmask نشان می‌دهد کدام‌یک از رویدادهای تعیین‌شده ماوس می‌توانند گزارش شوند؛ در صورت شکست کامل، 0 برگردانده می‌شود. oldmask مقدار قبلی نقاب رویدادهای ماوس است. اگر این تابع هرگز فراخوانی نشود، هیچ رویداد ماوسی گزارش نخواهد شد.

curses.napms(ms)

به مدت ms میلی‌ثانیه متوقف میشود.

curses.newpad(nlines, ncols)

یک اشاره‌گر به ساختار داده‌ای جدید پد با تعداد سطرهای و ستون‌های داده‌شده ایجاد کرده و برمی‌گرداند. یک پد را به‌عنوان یک شیء پنجره برمی‌گرداند.

یک پد مانند یک پنجره است، با این تفاوت که به اندازه‌ی صفحه‌نمایش محدود نمی‌شود و لزوماً با بخش خاصی از صفحه‌نمایش مرتبط نیست. هنگامی که به یک پنجره‌ی بزرگ نیاز است و تنها بخشی از پنجره در یک زمان روی صفحه‌نمایش قرار می‌گیرد، می‌توان از پدها استفاده کرد. بازسازی خودکار پدها (مانند ناشی از پیمایش یا بازتاب ورودی) رخ نمی‌دهد. متدهای refresh() و noutrefresh() یک پد برای مشخص کردن بخشی از پد که باید نمایش داده شود و مکان روی صفحه‌نمایش که برای نمایش استفاده می‌شود، به ۶ آرگومان نیاز دارند. آرگومان‌ها pminrow، pmincol، sminrow، smincol، smaxrow، smaxcol هستند؛ آرگومان‌های p به گوشه‌ی بالا-چپ ناحیه‌ی پد که باید نمایش داده شود اشاره دارند و آرگومان‌های s یک جعبه‌ی اسلایس (clipping box) روی صفحه‌نمایش تعریف می‌کنند که ناحیه‌ی پد باید درون آن نمایش داده شود.

curses.newwin(nlines, ncols)
curses.newwin(nlines, ncols, begin_y, begin_x)

یک پنجره جدید برمی‌گرداند که گوشه‌ی بالا-چپ آن در (begin_y, begin_x) قرار دارد و ارتفاع/عرض آن nlines/ncols است.

به‌طور پیش‌فرض، پنجره از موقعیت مشخص‌شده تا گوشه‌ی پایین سمت راست صفحه‌نمایش گسترش خواهد یافت.

curses.nl(flag=True)

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

اگر flag برابر False باشد، اثر آن همان فراخوانی nonl() است.

curses.nocbreak()

از حالت cbreak خارج شوید. به حالت عادی «cooked» همراه با بافرینگ خطی (line buffering) بازگردید.

curses.noecho()

از حالت echo خارج شوید. بازتاب نویسه‌های ورودی خاموش می‌شود.

curses.nonl()

حالت خط جدید را ترک می‌کند. تبدیل بازگشت به خط جدید در ورودی را غیرفعال می‌کند، و تبدیل سطح پایین خط جدید به خط جدید/بازگشت در خروجی را غیرفعال می‌کند (اما این موضوع رفتار addch('\n') را تغییر نمی‌دهد، که همواره معادل بازگشت و پیشروی خط را روی صفحه‌ی مجازی انجام می‌دهد). با غیرفعال بودن تبدیل، curses گاهی می‌تواند کمی سرعت حرکت عمودی را افزایش دهد؛ همچنین، قادر خواهد بود کلید بازگشت را در ورودی تشخیص دهد.

curses.noqiflush()

وقتی از روال noqiflush() استفاده می‌شود، تخلیه‌ی عادی صف‌های ورودی و خروجی مرتبط با نویسه‌های INTR، QUIT و SUSP انجام نخواهد شد. ممکن است بخواهید noqiflush() را در یک هندلر سیگنال فراخوانی کنید، اگر می‌خواهید پس از خروج هندلر، خروجی همان‌طور ادامه یابد که گویی وقفه‌ای رخ نداده است.

curses.noraw()

از حالت raw خارج شوید. به حالت عادی «cooked» با بافرینگ خطی (line buffering) بازگردید.

curses.pair_content(pair_number)

یک تاپل (fg, bg) را برمی‌گرداند که شامل رنگ‌های جفت‌رنگ درخواستی است. مقدار pair_number باید بین 0 و COLOR_PAIRS - 1 باشد.

curses.pair_number(attr)

شماره‌ی جفت‌رنگ تنظیم‌شده با مقدار ویژگی attr را برمی‌گرداند. color_pair() همتای این تابع است.

curses.putp(str)

Equivalent to tputs(str, 1, putchar); emit the value of a specified terminfo capability, a bytes object, for the current terminal. Note that the output of putp() always goes to standard output.

ابتدا باید setupterm() (یا initscr()) فراخوانی شود.

curses.qiflush([flag])

اگر flag برابر False باشد، نتیجه همانند فراخوانی noqiflush() است. اگر flag برابر True باشد، یا آرگومانی ارائه نشود، صف‌ها هنگام خوانده شدن این نویسه‌های کنترلی تخلیه می‌شوند.

curses.raw()

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

curses.reset_prog_mode()

پایانه را به حالت «program» بازمی‌گرداند، همان‌طور که پیش‌تر توسط def_prog_mode() ذخیره‌شده است.

curses.reset_shell_mode()

پایانه را به حالت «پوسته» بازمی‌گرداند، همان‌طور که پیش‌تر با def_shell_mode() ذخیره‌شده است.

curses.resetty()

وضعیت حالت‌های پایانه را به وضعیتی که در آخرین فراخوانی savetty() داشت، بازگردانید.

curses.resize_term(nlines, ncols)

تابع بک‌اند استفاده‌شده توسط resizeterm() که بیشتر کار را انجام می‌دهد؛ هنگام تغییر اندازه پنجره‌ها، resize_term() ناحیه‌هایی را که گسترش می‌یابند با نویسه‌های خالی پر می‌کند. برنامه فراخوان باید این ناحیه‌ها را با داده‌های مناسب پر کند. تابع resize_term() تلاش می‌کند اندازه همه پنجره‌ها را تغییر دهد. با این حال، به دلیل قرارداد فراخوانی پدها (pads)، تغییر اندازه آن‌ها بدون تعامل اضافی با برنامه ممکن نیست.

curses.resizeterm(nlines, ncols)

اندازه‌ی پنجره‌های استاندارد و جاری را به ابعاد مشخص‌شده تغییر می‌دهد و سایر داده‌های مدیریتی مورد استفاده‌ی کتابخانه‌ی curses را که ابعاد پنجره را ثبت می‌کنند، تنظیم می‌کند (به‌ویژه هندلری SIGWINCH).

curses.savetty()

وضعیت فعلی حالت‌های پایانه را در یک بافر ذخیره می‌کند که توسط resetty() قابل استفاده است.

curses.get_escdelay()

مقدار تنظیم‌شده توسط set_escdelay() را بازیابی می‌کند.

اضافه شده در نسخه‌ی 3.9.

curses.set_escdelay(ms)

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

اضافه شده در نسخه‌ی 3.9.

curses.get_tabsize()

مقدار تنظیم‌شده توسط set_tabsize() را بازیابی می‌کند.

اضافه شده در نسخه‌ی 3.9.

curses.set_tabsize(size)

تعداد ستون‌هایی را که کتابخانه curses هنگام تبدیل یک نویسه tab به فاصله‌ها، در زمان افزودن tab به یک پنجره استفاده می‌کند، تنظیم می‌کند.

اضافه شده در نسخه‌ی 3.9.

curses.setsyx(y, x)

مکان‌نمای صفحه‌ی مجازی را روی y، x تنظیم می‌کند. اگر y و x هر دو -1 باشند، leaveok روی True تنظیم می‌شود.

curses.setupterm(term=None, fd=-1)

پایانه را راه‌اندازی می‌کند. term رشته‌ای است که نام پایانه را مشخص می‌کند، یا None؛ اگر حذف شود یا None باشد، از مقدار متغیر محیطی TERM استفاده خواهد شد. fd توصیف‌گر پرونده‌ای است که هر دنباله‌ی راه‌اندازی به آن فرستاده می‌شود؛ اگر ارائه نشود یا -1 باشد، از توصیف‌گر پرونده برای sys.stdout استفاده خواهد شد.

اگر پایانه پیدا نشود یا ورودی پایگاه داده‌ی terminfo آن خوانده نشود، یک curses.error پرتاب می‌شود. اگر پایانه از قبل راه‌اندازی شده باشد، این تابع هیچ تأثیری ندارد.

توجه

فراخوانی initscr() پس از setupterm() باعث نشت پایانه‌ای می‌شود که setupterm() آن را اختصاص داده است: کتابخانه curses تنها یک پایانه جاری را نگه می‌دارد و پایانه‌ای را که پیش‌تر اختصاص داده شده است آزاد نمی‌کند.

curses.start_color()

در صورتی که برنامه‌نویس بخواهد از رنگ‌ها استفاده کند، و پیش از فراخوانی هر رویه‌ی دیگری برای دستکاری رنگ‌ها، باید فراخوانی شود. بهتر است این رویه درست پس از initscr() فراخوانی شود.

start_color() هشت رنگ پایه (سیاه، قرمز، سبز، زرد، آبی، سرخابی، فیروزه‌ای و سفید) و دو متغیر سراسری در ماژول curses یعنی COLORS و COLOR_PAIRS را مقداردهی اولیه می‌کند که حاوی بیشینه تعداد رنگ‌ها و جفت‌رنگ‌هایی هستند که پایانه می‌تواند پشتیبانی کند. همچنین رنگ‌های پایانه را به مقادیری بازمی‌گرداند که پایانه هنگام روشن شدن داشت.

curses.termattrs()

یک OR منطقی از تمام ویژگی‌های ویدیویی مورد پشتیبانی پایانه را برمی‌گرداند. این اطلاعات زمانی مفید است که یک برنامه curses به کنترل کامل بر ظاهر صفحه نیاز داشته باشد.

curses.termname()

مقدار متغیر محیطی TERM را به‌عنوان یک شیء بایتی برمی‌گرداند، که به ۱۴ نویسه کوتاه شده است.

curses.tigetflag(capname)

مقدار قابلیت بولی متناظر با نام قابلیت capname در terminfo را به‌صورت یک عدد صحیح برمی‌گرداند. اگر capname یک قابلیت بولی نباشد، مقدار -1 و اگر لغو شده یا در توضیح پایانه وجود نداشته باشد، مقدار 0 را برمی‌گرداند.

ابتدا باید setupterm() (یا initscr()) فراخوانی شود.

curses.tigetnum(capname)

مقدار قابلیت عددی متناظر با نام قابلیت terminfo به نام capname را به‌صورت عدد صحیح برمی‌گرداند. اگر capname یک قابلیت عددی نباشد، مقدار -2 و اگر لغوشده یا در توصیف پایانه موجود نباشد، مقدار -1 را برمی‌گرداند.

ابتدا باید setupterm() (یا initscr()) فراخوانی شود.

curses.tigetstr(capname)

مقدار قابلیت رشته‌ای متناظر با نام قابلیت capname در terminfo را به‌عنوان یک شیء bytes برمی‌گرداند. اگر capname یک «قابلیت رشته‌ای» terminfo نباشد، یا لغو شده باشد یا در توصیف پایانه وجود نداشته باشد، None را برمی‌گرداند.

ابتدا باید setupterm() (یا initscr()) فراخوانی شود.

curses.tparm(str[, ...])

Instantiate the bytes object str with the supplied parameters, where str should be a parameterized byte string obtained from the terminfo database. For example, tparm(tigetstr("cup"), 5, 3) could result in b'\033[6;4H', the exact result depending on terminal type. Up to nine integer parameters may be supplied.

ابتدا باید setupterm() (یا initscr()) فراخوانی شود.

curses.typeahead(fd)

مشخص می‌کند که توصیف‌گر پرونده fd برای بررسی پیش‌تایپ (typeahead) به کار رود. اگر fd -1 باشد، هیچ‌گونه بررسی پیش‌تایپ (typeahead) انجام نمی‌شود.

کتابخانه curses با بررسی دوره‌ای ورودی از پیش‌تایپ‌شده (typeahead) در حین به‌روزرسانی صفحه، «بهینه‌سازی شکست خط» (line-breakout optimization) را انجام می‌دهد. اگر ورودی یافت شود و از یک tty بیاید، به‌روزرسانی فعلی تا زمانی که refresh یا doupdate دوباره فراخوانی شود، به تعویق می‌افتد تا پاسخ سریع‌تری به فرمان‌هایی که از پیش‌تایپ‌شده‌اند داده شود. این تابع امکان تعیین یک توصیف‌گر پرونده متفاوت برای بررسی typeahead را فراهم می‌کند.

curses.unctrl(ch)

Return a bytes object which is a printable representation of the character ch; any attributes and color pair are ignored. Control characters are represented as a caret followed by the character, for example as b'^C'. Printing characters are left as they are.

curses.ungetch(ch)

ch را فشار دهید تا getch() بعدی آن را برگرداند.

ch may be an integer (a key code or the code of an encoded byte), a byte, or a string of length 1 which encodes to a single byte.

توجه

تنها یک ch را می‌توان پیش از فراخوانی getch() پوش کرد (push).

curses.update_lines_cols()

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

اضافه شده در نسخه‌ی 3.5.

curses.unget_wch(ch)

ch را فشار دهید تا get_wch() بعدی آن را برگرداند.

ch may be an integer (a character code, not a key code) or a string of length 1.

توجه

تنها یک ch را می‌توان پیش از فراخوانی get_wch() فشار داد.

اضافه شده در نسخه‌ی 3.3.

curses.ungetmouse(id, x, y, z, bstate)

یک رویداد KEY_MOUSE را به صف ورودی اضافه کنید و داده‌های وضعیت داده‌شده را با آن مرتبط کنید.

curses.use_env(flag)

در صورت استفاده، این تابع باید پیش از فراخوانی initscr() یا newterm فراخوانی شود. هنگامی که flag برابر False باشد، مقادیر سطرهای و ستون‌های تعیین‌شده در پایگاه داده‌ی terminfo استفاده خواهند شد، حتی اگر متغیرهای محیطی LINES و COLUMNS (که به‌طور پیش‌فرض استفاده می‌شوند) تنظیم‌شده باشند، یا اگر curses در یک پنجره در حال اجرا باشد (که در این حالت، رفتار پیش‌فرض استفاده از اندازه‌ی پنجره خواهد بود اگر LINES و COLUMNS تنظیم‌نشده باشند).

curses.use_default_colors()

معادل assume_default_colors(-1, -1).

curses.wrapper(func, /, *args, **kwargs)

curses را مقداردهی اولیه می‌کند و شیء فراخوانی‌پذیر دیگری به نام func را فراخوانی می‌کند که باید بخش باقی‌مانده‌ی برنامه‌ی استفاده‌کننده از curses شما باشد. اگر برنامه استثنایی را پرتاب کند، این تابع پیش از پرتاب دوباره‌ی استثنا و ایجاد ردگیری پشته، پایانه را به وضعیت سالم بازمی‌گرداند. سپس شیء فراخوانی‌پذیر func، پنجره‌ی اصلی 'stdscr' را به‌عنوان نخستین آرگومان خود و پس از آن، هر آرگومان دیگری را که به wrapper() داده شده باشد دریافت می‌کند. پیش از فراخوانی func، wrapper() حالت cbreak را روشن می‌کند، بازتاب را خاموش می‌کند، صفحه‌کلید پایانه را فعال می‌کند و اگر پایانه پشتیبانی از رنگ داشته باشد، رنگ‌ها را مقداردهی اولیه می‌کند. هنگام خروج (چه به‌صورت عادی و چه در اثر استثنا) حالت cooked را بازمی‌گرداند، بازتاب را روشن می‌کند و صفحه‌کلید پایانه را غیرفعال می‌کند.

اشیای پنجره

class curses.window

اشیای پنجره، که توسط initscr() و newwin() در بالا بازگردانده می‌شوند، دارای متدها و ویژگی‌های زیر هستند:

window.addch(ch[, attr])
window.addch(y, x, ch[, attr])

نویسه‌ی ch را در (y, x) با ویژگی‌های attr ترسیم می‌کند و هر نویسه‌ای را که پیش‌تر در آن مکان ترسیم شده باشد، بازنویسی می‌کند. به‌طور پیش‌فرض، موقعیت نویسه و ویژگی‌ها، تنظیمات جاری شیء پنجره هستند.

توجه

نوشتن خارج از پنجره، زیرپنجره یا پد، باعث پرتاب یک curses.error می‌شود. تلاش برای نوشتن در گوشه‌ی پایین سمت راست یک پنجره، زیرپنجره یا پد، باعث می‌شود پس از چاپ نویسه، یک استثنا پرتاب شود.

window.addnstr(str, n[, attr])
window.addnstr(y, x, str, n[, attr])

حداکثر n نویسه از رشته‌ی نویسه‌ای str را در (y, x) با ویژگی‌های attr رسم کنید و هر آنچه را که پیش‌تر روی نمایشگر بوده است بازنویسی کنید.

window.addstr(str[, attr])
window.addstr(y, x, str[, attr])

رشته‌ی نویسه‌ای str را در (y, x) با ویژگی‌های attr ترسیم می‌کند و هر چیزی را که پیش‌تر روی نمایشگر بوده، بازنویسی می‌کند.

توجه

  • نوشتن بیرون از پنجره، زیرپنجره یا پد موجب پرتاب curses.error می‌شود. تلاش برای نوشتن در گوشه‌ی پایین سمت راست یک پنجره، زیرپنجره یا پد منجر به پرتاب یک استثنا پس از چاپ رشته می‌شود.

  • یک اشکال در ncurses، بک‌اند این ماژول پایتون، می‌توانست هنگام تغییر اندازه‌ی پنجره‌ها باعث ایجاد خطاهای قطعه‌بندی حافظه (segfaults) شود. این اشکال در ncurses-6.1-20190511 برطرف شد. اگر مجبور به استفاده از نسخه‌ی قدیمی‌تر ncurses هستید، می‌توانید با خودداری از فراخوانی addstr() با یک str که حاوی نویسه‌های خط جدید داخلی است، از بروز آن جلوگیری کنید؛ در عوض، addstr() را برای هر خط به‌صورت جداگانه فراخوانی کنید.

window.attroff(attr)

ویژگی attr را از مجموعه «background» اعمال‌شده بر همه نوشتن‌ها در پنجره جاری حذف کنید.

window.attron(attr)

ویژگی attr را به مجموعه‌ی «background» اضافه کنید که بر تمام نوشتن‌ها در پنجره‌ی جاری اعمال می‌شود.

window.attrset(attr)

مجموعه‌ی ویژگی‌های «پس‌زمینه» را روی attr تنظیم کنید. این مجموعه در ابتدا 0 است (بدون ویژگی).

window.bkgd(ch[, attr])

ویژگی پس‌زمینه‌ی پنجره را روی نویسه‌ی ch، با صفت‌های attr تنظیم کنید. سپس این تغییر روی همه‌ی موقعیت‌های نویسه در آن پنجره اعمال می‌شود:

  • ویژگی هر نویسه در پنجره به ویژگی پس‌زمینه جدید تغییر می‌کند.

  • هر جا نویسه‌ی پس‌زمینه‌ی پیشین ظاهر شود، به نویسه‌ی پس‌زمینه‌ی جدید تغییر می‌یابد.

window.bkgdset(ch[, attr])

پس‌زمینه پنجره را تنظیم کنید. پس‌زمینه یک پنجره از یک نویسه و هر ترکیبی از ویژگی‌ها تشکیل شده است. بخش ویژگی پس‌زمینه با تمام نویسه‌های غیرخالی که در پنجره نوشته می‌شوند، ترکیب (OR) می‌شود. هر دو بخش نویسه و ویژگی پس‌زمینه با نویسه‌های خالی ترکیب می‌شوند. پس‌زمینه به یک خصوصیت نویسه تبدیل می‌شود و همراه با نویسه در هر عملیات پیمایش و درج/حذف خط/نویسه جابه‌جا می‌شود.

window.border([ls[, rs[, ts[, bs[, tl[, tr[, bl[, br]]]]]]]])

یک فریم دور لبه‌های پنجره ترسیم می‌کند. هر پارامتر، نویسه‌ی مورد استفاده برای بخش مشخصی از فریم را تعیین می‌کند؛ برای جزئیات بیشتر، جدول زیر را ببینید.

توجه

مقدار 0 برای هر پارامتر باعث می‌شود که نویسه‌ی پیش‌فرض برای آن پارامتر استفاده شود. از آرگومان‌های کلیدواژه‌ای نمی‌توان استفاده کرد. مقادیر پیش‌فرض در این جدول فهرست شده‌اند:

پارامتر

توضیحات

مقدار پیش‌فرض

ls

سمت چپ

ACS_VLINE

rs

سمت راست

ACS_VLINE

ts

بالا

ACS_HLINE

bs

پایین

ACS_HLINE

tl

گوشه‌ی بالا-چپ

ACS_ULCORNER

tr

گوشه‌ی بالا-راست

ACS_URCORNER

bl

گوشه پایین چپ

ACS_LLCORNER

br

گوشه پایین-راست

ACS_LRCORNER

window.box([vertch, horch])

مشابه border()، اما هر دو ls و rs برابر با vertch و هر دو ts و bs برابر با horch هستند. این تابع همیشه از نویسه‌های گوشه پیش‌فرض استفاده می‌کند.

window.chgat(attr)
window.chgat(num, attr)
window.chgat(y, x, attr)
window.chgat(y, x, num, attr)

ویژگی‌های num نویسه را در موقعیت فعلی مکان‌نما، یا در موقعیت (y, x) در صورت ارائه شدن، تنظیم می‌کند. اگر num داده نشده باشد یا -1 باشد، ویژگی برای تمام نویسه‌ها تا پایان خط تنظیم خواهد شد. این تابع مکان‌نما را در صورت ارائه شدن به موقعیت (y, x) منتقل می‌کند. خط تغییرکرده با استفاده از متد touchline() علامت‌گذاری می‌شود تا محتویات در بازخوانی بعدی پنجره دوباره نمایش داده شوند.

window.clear()

مانند erase()، اما باعث می‌شود در فراخوانی بعدی refresh()، کل پنجره دوباره ترسیم شود.

window.clearok(flag)

اگر flag برابر True باشد، فراخوانی بعدی refresh() پنجره را به‌طور کامل پاک می‌کند.

window.clrtobot()

پاک کردن از مکان‌نما تا انتهای پنجره: همه سطرهای زیر مکان‌نما حذف می‌شوند، سپس معادل clrtoeol() اجرا می‌شود.

window.clrtoeol()

از مکان‌نما تا انتهای خط را پاک می‌کند.

window.cursyncup()

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

window.delch([y, x])

نویسه‌ی زیر مکان‌نما، یا در (y, x) در صورت مشخص شدن، حذف می‌کند. همه‌ی نویسه‌های سمت راست در همان خط یک موقعیت به چپ جابه‌جا می‌شوند.

window.deleteln()

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

window.derwin(begin_y, begin_x)
window.derwin(nlines, ncols, begin_y, begin_x)

derwin() که مخفف «derive window» است، همانند فراخوانی subwin() است، با این تفاوت که begin_y و begin_x نسبت به مبدأ پنجره هستند، نه نسبت به کل صفحه‌نمایش. یک شیء پنجره برای پنجره مشتق‌شده برمی‌گرداند.

window.echochar(ch[, attr])

نویسه‌ی ch را با ویژگی attr اضافه کنید و بلافاصله refresh() را روی پنجره فراخوانی کنید.

window.enclose(y, x)

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

تغییر یافته در نسخه‌ی 3.10: پیش‌تر، به‌جای True یا False، 1 یا 0 را برمی‌گرداند.

window.encoding

Encoding used to encode the string arguments of the methods and to decode their results on a build without wide-character support. The encoding attribute is inherited from the parent window when a subwindow is created, for example with window.subwin(). By default, current locale encoding is used (see locale.getencoding()).

اضافه شده در نسخه‌ی 3.3.

window.erase()

پنجره را پاک کنید.

window.getbegyx()

یک تاپل (y, x) از مختصات گوشه‌ی بالا سمت چپ برمی‌گرداند.

window.getbkgd()

جفت نویسه/ویژگی پس‌زمینه‌ی جاری پنجره‌ی داده‌شده را برمی‌گرداند. اجزای آن را می‌توان مانند اجزای inch() استخراج کرد.

window.getch([y, x])

Read a key press, after moving the cursor to y, x if specified, and return it as an integer. The window is refreshed first if it is not a pad and was modified since the last refresh. Wait until a key is pressed, or return -1 if the read is non-blocking or times out (see nodelay() and timeout()).

An ordinary key is returned as the code of a single byte of its encoding in the current locale, so a character encoded with several bytes takes several calls. For example, in a UTF-8 locale 'é' is read as 195, then 169. Use get_wch() to read it as a single character.

In keypad mode (see keypad()) function keys and other special keys are returned as one of the KEY_* constants, which cannot be mistaken for an ordinary key. Otherwise, or if their escape sequence does not arrive in time (see notimeout() and set_escdelay()), their bytes are returned one at a time.

In echo mode (see echo()) the key is added to the window as by addch(); special keys are not echoed.

window.get_wch([y, x])

Read a key press, after moving the cursor to y, x if specified, and return it as a one-character str. The window is refreshed first if it is not a pad and was modified since the last refresh. Wait until a key is pressed, or raise error if the read is non-blocking or times out (see nodelay() and timeout()).

In keypad mode (see keypad()) function keys and other special keys are returned as one of the KEY_* constants, an integer. Otherwise, or if their escape sequence does not arrive in time (see notimeout() and set_escdelay()), their characters are returned one at a time.

In echo mode (see echo()) the key is added to the window as by addch(); special keys are not echoed.

اضافه شده در نسخه‌ی 3.3.

window.getkey([y, x])

Read a key press as getch() does, but return it as a str: an ordinary key as a one-character string, the byte decoded as Latin-1, and a special key as its name, such as 'KEY_UP' (see keyname()). Raise error instead of returning -1 if there is no input.

window.getmaxyx()

یک تاپل (y, x) شامل ارتفاع و عرض پنجره برمی‌گرداند.

window.getparyx()

مختصات آغازین این پنجره را نسبت به پنجره والد آن به‌صورت یک تاپل (y, x) برمی‌گرداند. اگر این پنجره والدی نداشته باشد، (-1, -1) را برمی‌گرداند.

window.getstr()
window.getstr(n)
window.getstr(y, x)
window.getstr(y, x, n)

Read a line of input from the user, with primitive line editing capacity, after moving the cursor to y, x if specified. Return it as a bytes object, in the encoding of the current locale and without the terminating newline. At most n bytes are read; n defaults to and cannot exceed 2047.

تغییر یافته در نسخه‌ی 3.14: حداکثر مقدار برای n از ۱۰۲۳ به ۲۰۴۷ افزایش یافت.

window.getyx()

یک تاپل (y, x) از موقعیت فعلی مکان‌نما نسبت به گوشه‌ی بالا-چپ پنجره برمی‌گرداند.

window.hline(ch, n[, attr])
window.hline(y, x, ch, n[, attr])

یک خط افقی را نمایش می‌دهد که از (y, x) آغاز می‌شود، به طول n است و از نویسه ch با ویژگی‌های attr تشکیل شده است. اگر کمتر از n خانه در دسترس باشد، خط در لبه‌ی راست پنجره متوقف می‌شود.

window.idcok(flag)

اگر flag برابر False باشد، curses دیگر استفاده از قابلیت سخت‌افزاری درج/حذف نویسه پایانه را در نظر نمی‌گیرد؛ اگر flag برابر True باشد، استفاده از درج و حذف نویسه فعال می‌شود. هنگامی که curses برای نخستین بار مقداردهی اولیه می‌شود، استفاده از درج/حذف نویسه به‌طور پیش‌فرض فعال است.

window.idlok(flag)

اگر flag برابر True باشد، curses تلاش می‌کند از امکانات سخت‌افزاری ویرایش خط استفاده کند. در غیر این صورت، curses از آن‌ها استفاده نخواهد کرد.

window.immedok(flag)

اگر flag برابر True باشد، هر تغییری در تصویر پنجره به‌طور خودکار باعث تازه‌سازی پنجره می‌شود؛ دیگر نیازی نیست خودتان refresh() را فراخوانی کنید. با این حال، ممکن است به دلیل فراخوانی‌های مکرر wrefresh، کارایی را به‌طور قابل‌توجهی کاهش دهد. این گزینه به‌طور پیش‌فرض غیرفعال است.

window.inch([y, x])

نویسه را در موقعیت داده‌شده در پنجره برمی‌گرداند. ۸ بیت پایینی، خود نویسه است و بیت‌های بالایی، ویژگی‌ها هستند؛ آن‌ها را با نقاب‌های بیتی A_CHARTEXT و A_ATTRIBUTES، و جفت رنگ را با pair_number() استخراج کنید. بایت نویسه، بایت کدگذاری‌شده بر اساس تنظیمات locale برای نویسه‌ی سلول است و با instr() سازگار است. در یک ساخت با نویسه‌های پهن (wide-character build)، نویسه‌ای که در تنظیمات locale فعلی در یک بایت جا نمی‌شود، بایت نویسه‌ی آن 0 است؛ برای خواندن چنین نویسه‌هایی از instr() استفاده کنید.

window.insch(ch[, attr])
window.insch(y, x, ch[, attr])

نویسه ch را با ویژگی‌های attr پیش از نویسه زیر مکان‌نما، یا در (y, x) در صورت مشخص بودن، درج می‌کند. تمام نویسه‌های سمت راست مکان‌نما یک موقعیت به راست جابه‌جا می‌شوند و راست‌ترین نویسه خط از بین می‌رود. موقعیت مکان‌نما تغییر نمی‌کند.

window.insdelln(nlines)

nlines خط را در پنجره‌ی مشخص‌شده، بالای خط فعلی درج می‌کند. nlines خط پایینی از دست می‌روند. برای nlines منفی، nlines خط را شروع از خط زیر مکان‌نما حذف می‌کند و سطرهای باقی‌مانده را به بالا حرکت می‌دهد. nlines خط پایینی پاک می‌شوند. موقعیت فعلی مکان‌نما بدون تغییر باقی می‌ماند.

window.insertln()

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

window.insnstr(str, n[, attr])
window.insnstr(y, x, str, n[, attr])

یک رشته از نویسه‌ها (هر تعداد نویسه که در خط جا شود) را پیش از نویسه‌ی زیر مکان‌نما، تا سقف n نویسه درج کنید. اگر n صفر یا منفی باشد، تمام رشته درج می‌شود. همه‌ی نویسه‌های سمت راست مکان‌نما به سمت راست جابه‌جا می‌شوند و راست‌ترین نویسه‌های خط از دست می‌روند. موقعیت مکان‌نما تغییر نمی‌کند (پس از حرکت به y، x، در صورت مشخص بودن).

window.insstr(str[, attr])
window.insstr(y, x, str[, attr])

یک رشته‌ی نویسه‌ای (به تعداد نویسه‌هایی که در خط جا می‌شوند) پیش از نویسه‌ی زیر مکان‌نما درج می‌شود. همه‌ی نویسه‌های سمت راست مکان‌نما به سمت راست جابه‌جا می‌شوند و راست‌ترین نویسه‌های خط از دست می‌روند. موقعیت مکان‌نما تغییر نمی‌کند (پس از حرکت به y، x، در صورت مشخص بودن).

window.instr([n])
window.instr(y, x[, n])

Read the text of the window from the current cursor position, or from y, x if specified, to the end of the line, and return it as a bytes object, in the encoding of the current locale. Attributes and color pairs are stripped. At most n bytes are read; n defaults to and cannot exceed 2047.

تغییر یافته در نسخه‌ی 3.14: حداکثر مقدار برای n از ۱۰۲۳ به ۲۰۴۷ افزایش یافت.

window.is_linetouched(line)

اگر سطر مشخص‌شده از آخرین فراخوانی refresh() تغییر کرده باشد، True را برمی‌گرداند؛ در غیر این صورت False را برمی‌گرداند. اگر line برای پنجره داده‌شده معتبر نباشد، استثنای curses.error پرتاب می‌شود.

window.is_wintouched()

اگر پنجره‌ی مشخص‌شده از آخرین فراخوانی refresh() تغییر کرده باشد، True را برمی‌گرداند؛ در غیر این صورت False را برمی‌گرداند.

window.keypad(flag)

If flag is True, escape sequences generated by some keys (keypad, function keys) will be interpreted by curses. If flag is False, escape sequences will be left as is in the input stream. Keypad mode is disabled by default, but wrapper() enables it for the main window.

window.leaveok(flag)

اگر flag برابر True باشد، مکان‌نما هنگام به‌روزرسانی در همان جای خود باقی می‌ماند، به جای آنکه در «موقعیت مکان‌نما» قرار گیرد. این کار حرکت مکان‌نما را تا حد ممکن کاهش می‌دهد.

اگر flag برابر False باشد، مکان‌نما پس از یک به‌روزرسانی همیشه در «موقعیت مکان‌نما» خواهد بود.

window.move(new_y, new_x)

مکان‌نما را به (new_y, new_x) حرکت دهید.

window.mvderwin(y, x)

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

window.mvwin(new_y, new_x)

پنجره را جابه‌جا کنید تا گوشه‌ی بالا-چپ آن در (new_y, new_x) قرار گیرد.

جابه‌جایی پنجره به گونه‌ای که هر بخشی از آن خارج از صفحه باشد، خطا است: پنجره جابه‌جا نمی‌شود و curses.error پرتاب می‌شود.

window.nodelay(flag)

اگر flag برابر True باشد، getch() غیرمسدود خواهد بود.

window.notimeout(flag)

اگر flag برابر True باشد، زمان انقضا برای دنباله‌های خنثی‌سازی اعمال نخواهد شد.

اگر flag برابر False باشد، پس از چند میلی‌ثانیه، یک دنباله‌ی گریز (escape sequence) تفسیر نخواهد شد و همان‌گونه که هست در جریان ورودی باقی خواهد ماند.

window.noutrefresh()
window.noutrefresh(pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol)

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

این ۶ آرگومان را فقط زمانی می‌توان تعیین کرد، و در آن صورت الزامی هستند، که پنجره یک پد ساخته‌شده با newpad() باشد؛ معنای آن‌ها همان معنایی است که برای refresh() وجود دارد.

window.overlay(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])

پنجره را بر روی destwin همپوشانی می‌کند. لازم نیست پنجره‌ها هم‌اندازه باشند، تنها ناحیه‌ی همپوشانی کپی می‌شود. این کپی غیرمخرب است، به این معنا که نویسه‌ی پس‌زمینه‌ی فعلی محتوای قبلی destwin را بازنویسی نمی‌کند.

برای به‌دست آوردن کنترل دقیق بر ناحیه‌ی کپی‌شده، می‌توان از دومین فرم overlay() استفاده کرد. sminrow و smincol مختصات گوشه‌ی بالا-چپ پنجره‌ی مبدأ هستند، و سایر متغیرها یک مستطیل را در پنجره‌ی مقصد مشخص می‌کنند.

window.overwrite(destwin[, sminrow, smincol, dminrow, dmincol, dmaxrow, dmaxcol])

پنجره را روی destwin بازنویسی می‌کند. لازم نیست پنجره‌ها هم‌اندازه باشند؛ در این صورت فقط ناحیه‌ی هم‌پوشانی کپی می‌شود. این کپی مخرب است، به این معنا که نویسه‌ی پس‌زمینه‌ی فعلی محتوای قدیمی destwin را بازنویسی می‌کند.

برای به دست آوردن کنترل ریزدانه بر ناحیه‌ی کپی‌شده، می‌توان از دومین شکل overwrite() استفاده کرد. sminrow و smincol مختصات گوشه‌ی بالا-چپ پنجره‌ی مبدأ هستند، سایر متغیرها یک مستطیل را در پنجره‌ی مقصد مشخص می‌کنند.

window.putwin(file)

تمام داده‌های مرتبط با پنجره را در شیء پرونده ارائه‌شده می‌نویسد. این اطلاعات را می‌توان بعداً با استفاده از تابع getwin() بازیابی کرد.

window.redrawln(beg, num)

نشان می‌دهد که num خط از سطرهای صفحه، که از خط beg شروع می‌شوند، آسیب‌دیده‌اند و باید در فراخوانی بعدی refresh() به‌طور کامل بازترسیم شوند.

window.redrawwin()

کل پنجره را لمس (touch) کنید؛ این کار باعث می‌شود در فراخوانی بعدی refresh() به‌طور کامل بازترسیم شود.

window.refresh([pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol])

نمایش را بلافاصله به‌روزرسانی کنید (صفحه واقعی را با متدهای قبلی ترسیم/حذف همگام‌سازی کنید).

این ۶ آرگومان فقط زمانی می‌توانند مشخص شوند، و در آن صورت الزامی هستند، که پنجره یک پد باشد که با newpad() ایجاد شده است. پارامترهای اضافی برای مشخص‌کردن اینکه چه بخشی از پد و صفحه درگیر است، لازم هستند. pminrow و pmincol گوشه‌ی بالا سمت چپ مستطیلی را که باید در پد نمایش داده شود مشخص می‌کنند. sminrow، smincol، smaxrow و smaxcol لبه‌های مستطیلی را که باید روی صفحه نمایش داده شود مشخص می‌کنند. گوشه‌ی پایین سمت راست مستطیلی که باید در پد نمایش داده شود، از مختصات صفحه محاسبه می‌شود، زیرا اندازه‌ی مستطیل‌ها باید یکسان باشد. هر دو مستطیل باید به‌طور کامل درون ساختارهای مربوط به خود قرار داشته باشند. مقادیر منفی pminrow، pmincol، sminrow یا smincol به‌عنوان صفر در نظر گرفته می‌شوند.

window.resize(nlines, ncols)

فضای ذخیره‌سازی برای یک پنجره curses را دوباره تخصیص می‌دهد تا ابعاد آن با مقادیر مشخص‌شده تنظیم شود. اگر هر یک از ابعاد بزرگ‌تر از مقادیر فعلی باشد، داده‌های پنجره با نویسه‌های خالی پر می‌شوند که جلوه پس‌زمینه فعلی (که با bkgdset() تنظیم شده است) در آن‌ها ادغام شده است.

window.scroll([lines=1])

صفحه یا ناحیه‌ی پیمایش را پیمایش می‌کند. اگر lines مثبت باشد، به اندازه‌ی lines خط به بالا پیمایش می‌شود و اگر منفی باشد، به پایین پیمایش می‌شود. پیمایش هیچ اثری ندارد مگر اینکه با scrollok() برای پنجره فعال شده باشد.

window.scrollok(flag)

کنترل کنید که وقتی مکان‌نمای یک پنجره از لبه‌ی پنجره یا ناحیه‌ی پیمایش خارج می‌شود، چه اتفاقی رخ می‌دهد؛ خواه در نتیجه‌ی یک عمل خط جدید روی خط پایین، خواه با تایپ آخرین نویسه‌ی خط آخر. اگر flag برابر False باشد، مکان‌نما روی خط پایین باقی می‌ماند. اگر flag برابر True باشد، پنجره یک خط به بالا پیمایش می‌شود. توجه داشته باشید که برای دریافت اثر پیمایش فیزیکی روی پایانه، لازم است idlok() نیز فراخوانی شود.

window.setscrreg(top, bottom)

ناحیه‌ی پیمایش را از خط top تا خط bottom تنظیم کنید. تمام عملیات‌های پیمایش در این ناحیه انجام خواهند شد.

window.standend()

ویژگی standout را خاموش کنید. در برخی پایانه‌ها، این کار به‌عنوان اثر جانبی، تمام ویژگی‌ها را خاموش می‌کند.

window.standout()

ویژگی A_STANDOUT را روشن کنید.

window.subpad(begin_y, begin_x)
window.subpad(nlines, ncols, begin_y, begin_x)

یک زیرپد (sub-pad) برمی‌گرداند که گوشه‌ی بالا-چپ آن در (begin_y, begin_x) قرار دارد و عرض/ارتفاع آن ncols/nlines است. مختصات نسبت به پد والد است (برخلاف subwin()، که از مختصات صفحه استفاده می‌کند). این متد فقط برای پدهای ایجادشده با newpad() در دسترس است.

window.subwin(begin_y, begin_x)
window.subwin(nlines, ncols, begin_y, begin_x)

یک زیرپنجره را برمی‌گرداند که گوشه‌ی بالا-چپ آن در مختصات نسبت به صفحه‌ی نمایش (begin_y, begin_x) قرار دارد و عرض/ارتفاع آن ncols/nlines است.

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

window.syncdown()

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

window.syncok(flag)

اگر flag برابر True باشد، syncup() به‌طور خودکار هر زمان که تغییری در پنجره وجود داشته باشد فراخوانی می‌شود.

window.syncup()

تمام مکان‌های موجود در نیاکان پنجره را که در پنجره تغییر کرده‌اند، لمس کنید.

window.timeout(delay)

تنظیم رفتار خواندن مسدودکننده یا غیرمسدودکننده برای پنجره. اگر delay منفی باشد، از خواندن مسدودکننده استفاده می‌شود (که به‌طور نامحدود برای ورودی منتظر می‌ماند). اگر delay صفر باشد، از خواندن غیرمسدودکننده استفاده می‌شود و getch() در صورتی که هیچ ورودی در انتظار نباشد، -1 را برمی‌گرداند. اگر delay مثبت باشد، getch() به مدت delay میلی‌ثانیه مسدود می‌شود و اگر در پایان آن زمان هنوز ورودی وجود نداشته باشد، -1 را برمی‌گرداند.

window.touchline(start, count[, changed])

فرض کنید count خط با شروع از خط start تغییر کرده‌اند. اگر changed ارائه شود، مشخص می‌کند که سطرهای متأثر به‌عنوان تغییر یافته علامت‌گذاری شده‌اند (changed=True) یا بدون تغییر علامت‌گذاری شده‌اند (changed=False).

window.touchwin()

برای بهینه‌سازی ترسیم، فرض کنید کل پنجره تغییر کرده است.

window.untouchwin()

تمام سطرهای پنجره را از آخرین فراخوانی refresh() به‌عنوان بدون تغییر علامت‌گذاری می‌کند.

window.vline(ch, n[, attr])
window.vline(y, x, ch, n[, attr])

یک خط عمودی را از (y, x) با طول n نمایش می‌دهد که از نویسه‌ی ch با ویژگی‌های attr تشکیل شده است.

ثابت‌ها

ماژول curses اعضای داده‌ای زیر را تعریف می‌کند:

curses.ERR

برخی از روال‌های curses که عدد صحیحی برمی‌گردانند، مانند getch()، در صورت شکست ERR را برمی‌گردانند.

curses.OK

برخی روتین‌های curses که یک عدد صحیح برمی‌گردانند، مانند napms()، در صورت موفقیت OK را برمی‌گردانند.

curses.version

یک شیء bytes که نسخه‌ی فعلی ماژول را نشان می‌دهد.

curses.ncurses_version

یک تاپل نام‌دار (named tuple) شامل سه کامپوننت از نسخه‌ی کتابخانه‌ی ncurses: major، minor و patch. همه‌ی مقدارها عدد صحیح هستند. همچنین می‌توان به این کامپوننت‌ها با نام دسترسی داشت، بنابراین curses.ncurses_version[0] معادل curses.ncurses_version.major است و به همین ترتیب.

دسترس‌پذیری: اگر از کتابخانه ncurses استفاده شود.

اضافه شده در نسخه‌ی 3.8.

curses.COLORS

حداکثر تعداد رنگ‌هایی که پایانه می‌تواند از آن‌ها پشتیبانی کند. این مقدار فقط پس از فراخوانی start_color() تعریف می‌شود.

curses.COLOR_PAIRS

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

curses.COLS

عرض صفحه، یعنی تعداد ستون‌ها. این مقدار فقط پس از فراخوانی initscr() تعریف می‌شود. توسط update_lines_cols()، resizeterm() و resize_term() به‌روزرسانی می‌شود.

curses.LINES

ارتفاع صفحه، یعنی تعداد سطرهای. این مقدار تنها پس از فراخوانی initscr() تعریف می‌شود. توسط update_lines_cols()، resizeterm() و resize_term() به‌روزرسانی می‌شود.

برخی ثابت‌ها برای تعیین ویژگی‌های سلول نویسه در دسترس هستند. ثابت‌های دقیقی که در دسترس هستند، به سیستم وابسته‌اند.

ویژگی

معنی

curses.A_ALTCHARSET

حالت مجموعه‌نویسه‌ی جایگزین

حالت چشمک‌زن

curses.A_BOLD

حالت پررنگ

curses.A_DIM

حالت کم‌نور

curses.A_INVIS

حالت نامرئی یا خالی

curses.A_ITALIC

حالت کج

curses.A_NORMAL

ویژگی عادی

curses.A_PROTECT

حالت محافظت‌شده

curses.A_REVERSE

معکوس کردن رنگ‌های پس‌زمینه و پیش‌زمینه

curses.A_STANDOUT

حالت برجسته (Standout mode)

curses.A_UNDERLINE

حالت زیرخط

curses.A_HORIZONTAL

برجسته‌سازی افقی

curses.A_LEFT

برجسته‌سازی سمت چپ

curses.A_LOW

برجسته‌سازی کم

curses.A_RIGHT

برجسته‌سازی راست

curses.A_TOP

برجسته‌سازی بالا

curses.A_VERTICAL

برجسته‌سازی عمودی

اضافه شده در نسخه‌ی 3.7: A_ITALIC افزوده شد.

چندین ثابت برای استخراج ویژگی‌های متناظری که توسط برخی متدها برگردانده می‌شوند، در دسترس هستند.

نقاب بیتی

معنی

curses.A_ATTRIBUTES

نقاب بیتی (bit-mask) برای استخراج ویژگی‌ها

curses.A_CHARTEXT

نقاب بیتی برای استخراج یک نویسه

curses.A_COLOR

نقاب بیتی (bit-mask) برای استخراج اطلاعات فیلد جفت‌رنگ

کلیدها با ثابت‌های عدد صحیح با نام‌هایی که با KEY_ آغاز می‌شوند، ارجاع داده می‌شوند. کلیدهای دقیق موجود، به سیستم وابسته‌اند.

ثابت کلید

کلید

curses.KEY_MIN

کمینه مقدار کلید

curses.KEY_BREAK

کلید Break (غیرقابل‌اعتماد)

curses.KEY_DOWN

فلش پایین

curses.KEY_UP

فلش بالا

curses.KEY_LEFT

پیکان چپ

curses.KEY_RIGHT

فلش راست

curses.KEY_HOME

کلید Home (فلش بالا+چپ)

curses.KEY_BACKSPACE

پس‌بر (غیرقابل‌اطمینان)

curses.KEY_F0

کلیدهای تابعی. تا ۶۴ کلید تابعی پشتیبانی می‌شود.

curses.KEY_Fn

مقدار کلید تابعی n

curses.KEY_DL

حذف خط

curses.KEY_IL

درج خط

curses.KEY_DC

نویسه‌ی حذف

curses.KEY_IC

درج نویسه یا ورود به حالت درج

curses.KEY_EIC

خروج از حالت درج نویسه

curses.KEY_CLEAR

پاک‌کردن صفحه

curses.KEY_EOS

پاک کردن تا انتهای صفحه

curses.KEY_EOL

پاک‌سازی تا انتهای خط

curses.KEY_SF

پیمایش ۱ خط به جلو

curses.KEY_SR

پیمایش ۱ خط به عقب (معکوس)

curses.KEY_NPAGE

صفحه بعدی

curses.KEY_PPAGE

صفحه قبلی

curses.KEY_STAB

تنظیم زبانه

curses.KEY_CTAB

پاک‌کردن زبانه

curses.KEY_CATAB

پاک کردن همه زبانه‌ها

curses.KEY_ENTER

Enter یا ارسال (غیرقابل‌اعتماد)

curses.KEY_SRESET

بازنشانی نرم (جزئی) (غیرقابل‌اطمینان)

curses.KEY_RESET

بازنشانی یا بازنشانی سخت (غیرقابل‌اطمینان)

curses.KEY_PRINT

چاپ

curses.KEY_LL

Home down یا bottom (پایین سمت چپ)

curses.KEY_A1

بالا سمت چپ صفحه‌کلید

curses.KEY_A3

بالا سمت راست صفحه‌کلید

curses.KEY_B2

مرکز صفحه‌کلید عددی

curses.KEY_C1

پایین سمت چپ صفحه‌کلید عددی

curses.KEY_C3

پایین سمت راست صفحه‌کلید عددی

curses.KEY_BTAB

تب معکوس (Back tab)

curses.KEY_BEG

Beg (آغاز)

curses.KEY_CANCEL

لغو

curses.KEY_CLOSE

بستن

curses.KEY_COMMAND

Cmd (فرمان)

curses.KEY_COPY

کپی

curses.KEY_CREATE

ایجاد

curses.KEY_END

پایان

curses.KEY_EXIT

خروج

curses.KEY_FIND

یافتن

curses.KEY_HELP

راهنما

curses.KEY_MARK

نشانه

curses.KEY_MESSAGE

پیام

curses.KEY_MOVE

انتقال

curses.KEY_NEXT

بعدی

curses.KEY_OPEN

باز کردن

curses.KEY_OPTIONS

گزینه‌ها

curses.KEY_PREVIOUS

قبلی (پیشین)

curses.KEY_REDO

بازانجام

curses.KEY_REFERENCE

مرجع (reference)

curses.KEY_REFRESH

تازه‌سازی

curses.KEY_REPLACE

جایگزینی

curses.KEY_RESTART

راه‌اندازی مجدد

curses.KEY_RESUME

از سرگیری

curses.KEY_SAVE

ذخیره

curses.KEY_SBEG

آغاز شیفت‌شده (Beg)

curses.KEY_SCANCEL

لغو با Shift

curses.KEY_SCOMMAND

Command همراه با Shift

curses.KEY_SCOPY

کپی شیفت‌شده

curses.KEY_SCREATE

ایجاد با شیفت

curses.KEY_SDC

حذف نویسه با Shift

curses.KEY_SDL

حذف خط با Shift

curses.KEY_SELECT

انتخاب

curses.KEY_SEND

End شیفت‌شده

curses.KEY_SEOL

پاک‌کردن خط با Shift

curses.KEY_SEXIT

خروج شیفت‌شده

curses.KEY_SFIND

جستجوی Shiftدار

curses.KEY_SHELP

راهنمای شیفت‌شده

curses.KEY_SHOME

Home با Shift

curses.KEY_SIC

ورودی شیفت‌شده

curses.KEY_SLEFT

پیکان چپ همراه با Shift

curses.KEY_SMESSAGE

پیام شیفت‌شده

curses.KEY_SMOVE

جابه‌جایی شیفت‌شده

curses.KEY_SNEXT

بعدی شیفت‌شده

curses.KEY_SOPTIONS

گزینه‌های شیفت‌شده

curses.KEY_SPREVIOUS

شیفت‌شده‌ی قبلی

curses.KEY_SPRINT

چاپ شیفت‌شده

curses.KEY_SREDO

انجام دوباره با Shift

curses.KEY_SREPLACE

جایگزینی با Shift

curses.KEY_SRIGHT

پیکان راست شیفت‌شده

curses.KEY_SRSUME

ازسرگیری شیفت‌شده

curses.KEY_SSAVE

ذخیره با Shift

curses.KEY_SSUSPEND

تعلیق شیفت‌شده

curses.KEY_SUNDO

واگرد شیفت‌شده (Shifted Undo)

curses.KEY_SUSPEND

تعلیق

curses.KEY_UNDO

واگرد

curses.KEY_MOUSE

رویداد ماوس رخ داده است

curses.KEY_RESIZE

رویداد تغییر اندازه‌ی پایانه

curses.KEY_MAX

حداکثر مقدار کلید

در پایانه‌های VT100 و شبیه‌سازی‌های نرم‌افزاری آن‌ها، مانند شبیه‌سازهای پایانه X، معمولاً حداقل چهار کلید تابع (KEY_F1، KEY_F2، KEY_F3، KEY_F4) در دسترس هستند و کلیدهای جهت به‌شکل بدیهی به KEY_UP، KEY_DOWN، KEY_LEFT و KEY_RIGHT نگاشته شده‌اند. اگر رایانه شما صفحه‌کلید PC دارد، می‌توانید با اطمینان انتظار داشته باشید که کلیدهای جهت و دوازده کلید تابع وجود داشته باشند (صفحه‌کلیدهای قدیمی PC ممکن است تنها ده کلید تابع داشته باشند)؛ همچنین، نگاشت‌های صفحه‌کلید عددی زیر استاندارد هستند:

کلید

ثابت

Insert

KEY_IC

Delete

KEY_DC

Home

KEY_HOME

End

KEY_END

Page Up

KEY_PPAGE

Page Down

KEY_NPAGE

جدول زیر نویسه‌های مجموعه نویسه جایگزین را فهرست می‌کند. این نویسه‌ها از پایانه VT100 به ارث رسیده‌اند و معمولاً در شبیه‌سازی‌های نرم‌افزاری مانند پایانه‌های X در دسترس خواهند بود. هنگامی که هیچ گرافیکی در دسترس نباشد، curses به یک تقریب خام ASCII قابل‌چاپ برمی‌گردد.

توجه

این موارد تنها پس از فراخوانی initscr() در دسترس هستند.

کد ACS

معنی

curses.ACS_BBSS

نام جایگزین برای گوشه‌ی بالا سمت راست

curses.ACS_BLOCK

بلوک مربعی توپر

curses.ACS_BOARD

صفحه‌ای از مربع‌ها

curses.ACS_BSBS

نام جایگزین برای خط افقی

curses.ACS_BSSB

نام جایگزین برای گوشه‌ی بالا سمت چپ

curses.ACS_BSSS

نام جایگزین برای T بالایی (top tee)

curses.ACS_BTEE

tee پایین (bottom tee)

curses.ACS_BULLET

بولت (bullet)

curses.ACS_CKBOARD

صفحه شطرنجی (stipple)

curses.ACS_DARROW

فلش رو به پایین

curses.ACS_DEGREE

نماد درجه

curses.ACS_DIAMOND

لوزی

curses.ACS_GEQUAL

بزرگ‌تر یا مساوی

curses.ACS_HLINE

خط افقی

curses.ACS_LANTERN

نماد فانوس

curses.ACS_LARROW

پیکان چپ

curses.ACS_LEQUAL

کمتر یا مساوی

curses.ACS_LLCORNER

گوشه‌ی پایین سمت چپ

curses.ACS_LRCORNER

گوشه‌ی پایین-راست

curses.ACS_LTEE

تی چپ (left tee)

curses.ACS_NEQUAL

علامت نابرابر

curses.ACS_PI

حرف پی

curses.ACS_PLMINUS

علامت مثبت-منفی

curses.ACS_PLUS

علامت جمع بزرگ

curses.ACS_RARROW

فلش راست

curses.ACS_RTEE

تی راست (right tee)

curses.ACS_S1

خط پویش ۱

curses.ACS_S3

خط پویش ۳

curses.ACS_S7

خط پویش ۷

curses.ACS_S9

خط پویش ۹

curses.ACS_SBBS

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

curses.ACS_SBSB

نام جایگزین برای خط عمودی

curses.ACS_SBSS

نام جایگزین برای right tee

curses.ACS_SSBB

نام جایگزین برای گوشه‌ی پایین چپ

curses.ACS_SSBS

نام جایگزین برای tee پایین (bottom tee)

curses.ACS_SSSB

نام جایگزین برای تی چپ (left tee)

curses.ACS_SSSS

نام جایگزین برای تقاطع (crossover) یا به‌علاوه‌ی بزرگ (big plus)

curses.ACS_STERLING

پوند استرلینگ

curses.ACS_TTEE

top tee

curses.ACS_UARROW

پیکان بالا

curses.ACS_ULCORNER

گوشه‌ی بالا-چپ

curses.ACS_URCORNER

گوشه‌ی بالا-راست

curses.ACS_VLINE

خط عمودی

جدول زیر ثابت‌های دکمه‌ی ماوس را که توسط getmouse() استفاده می‌شوند، فهرست می‌کند:

ثابت دکمه‌ی ماوس

معنی

curses.BUTTONn_PRESSED

دکمه‌ی n ماوس فشرده شد

curses.BUTTONn_RELEASED

دکمه‌ی ماوس n رها شد

curses.BUTTONn_CLICKED

دکمه‌ی ماوس n کلیک شد

curses.BUTTONn_DOUBLE_CLICKED

دکمه ماوس n دوبار کلیک شد

curses.BUTTONn_TRIPLE_CLICKED

دکمه‌ی ماوس n سه‌بار کلیک شد

curses.BUTTON_SHIFT

کلید Shift در حین تغییر وضعیت دکمه فشرده بود

curses.BUTTON_CTRL

کلید Control در حین تغییر وضعیت دکمه فشرده بود

curses.BUTTON_ALT

کلید Alt در حین تغییر وضعیت دکمه فشرده شده بود

تغییر یافته در نسخه‌ی 3.10: ثابت‌های BUTTON5_* اکنون در صورتی که توسط کتابخانه curses زیرین ارائه شده باشند، در دسترس قرار می‌گیرند.

جدول زیر رنگ‌های از پیش تعریف‌شده را فهرست می‌کند:

ثابت

رنگ

curses.COLOR_BLACK

سیاه

curses.COLOR_BLUE

آبی

curses.COLOR_CYAN

فیروزه‌ای (آبی مایل به سبز روشن)

curses.COLOR_GREEN

سبز

curses.COLOR_MAGENTA

سرخابی (قرمز مایل به بنفش)

curses.COLOR_RED

قرمز

curses.COLOR_WHITE

سفید

curses.COLOR_YELLOW

زرد

curses.textpad --- ابزارک ورودی متن برای برنامه‌های curses

ماژول curses.textpad کلاس Textbox را فراهم می‌کند که ویرایش مقدماتی متن را در یک پنجره curses مدیریت می‌کند و از مجموعه‌ای از اتصال‌های کلید (keybindings) شبیه به Emacs پشتیبانی می‌کند (بنابراین، همچنین مانند Netscape Navigator، BBedit 6.x، FrameMaker و بسیاری از برنامه‌های دیگر). این ماژول همچنین تابعی برای رسم مستطیل ارائه می‌دهد که برای قاب‌گذاری جعبه‌های متنی یا سایر مقاصد مفید است.

ماژول curses.textpad تابع زیر را تعریف می‌کند:

curses.textpad.rectangle(win, uly, ulx, lry, lrx)

یک مستطیل رسم می‌کند. اولین آرگومان باید یک شیء پنجره باشد؛ آرگومان‌های باقی‌مانده مختصات نسبت به آن پنجره هستند. آرگومان‌های دوم و سوم مختصات y و x گوشه‌ی بالا سمت چپ مستطیلی هستند که رسم می‌شود؛ آرگومان‌های چهارم و پنجم مختصات y و x گوشه‌ی پایین سمت راست هستند. این مستطیل با استفاده از نویسه‌های فرم VT100/IBM PC روی پایانه‌هایی که این امکان را فراهم می‌کنند (از جمله xterm و بیشتر شبیه‌سازهای نرم‌افزاری پایانه دیگر) رسم خواهد شد. در غیر این صورت، با خط‌تیره‌ها، سطرهای عمودی و علامت‌های جمع ASCII رسم خواهد شد.

اشیاء Textbox

می‌توانید یک شیء Textbox را به‌صورت زیر نمونه‌سازی کنید:

class curses.textpad.Textbox(win, insert_mode=False)

یک شیء ابزارک جعبه‌متن را برمی‌گرداند. آرگومان win باید یک شیء پنجره از curses باشد که جعبه‌متن در آن قرار گیرد. اگر insert_mode درست باشد، جعبه‌متن به جای بازنویسی متن موجود، نویسه‌های تایپ‌شده را درج می‌کند و متن موجود را به سمت راست جابه‌جا می‌کند. مکان‌نمای ویرایش جعبه‌متن در ابتدا در گوشه‌ی بالا سمت چپ پنجره‌ی حاوی آن قرار دارد، با مختصات (0, 0). پرچم stripspaces این نمونه در ابتدا روشن است.

شیءهای Textbox متدهای زیر را دارند:

edit(validate=None)

این نقطه ورودی است که معمولاً از آن استفاده خواهید کرد. این نقطه ورود، کلیدهای ویرایشی را تا زمانی می‌پذیرد که یکی از کلیدهای خاتمه فشرده شود. اگر validate ارائه شده باشد، باید یک تابع باشد. این تابع برای هر کلید فشرده‌شده با همان کلید به‌عنوان پارامتر فراخوانی می‌شود؛ توزیع فرمان بر اساس نتیجه انجام می‌شود. اگر مقدار نادرستی برگرداند، کلید نادیده گرفته می‌شود. این متد محتوای پنجره را به‌صورت یک رشته برمی‌گرداند؛ اینکه نویسه‌های خالی درون پنجره گنجانده شوند یا نه، تحت تأثیر ویژگی stripspaces است.

do_command(ch)

یک کلیدفشاری فرمانی را پردازش می‌کند. مقدار 1 را برای ادامه‌ی ویرایش بازمی‌گرداند، یا اگر یک کلیدفشاری پایانی پردازش شده باشد، مقدار 0 را بازمی‌گرداند. کلیدفشارهای ویژه‌ی پشتیبانی‌شده عبارت‌اند از:

فشار کلید

عملیات

Control-A

به لبه‌ی چپ پنجره بروید.

Control-B

حرکت مکان‌نما به چپ، با انتقال به خط قبلی در صورت لزوم.

Control-D

حذف نویسه‌ی زیر مکان‌نما.

Control-E

به لبه‌ی راست (در صورت خاموش بودن stripspaces) یا پایان خط (در صورت روشن بودن stripspaces) بروید.

Control-F

مکان‌نما به راست، در صورت لزوم به خط بعدی می‌رود.

Control-G

خاتمه دادن و برگرداندن محتوای پنجره.

Control-H

حذف نویسه‌ی قبلی.

Control-J

اگر پنجره ۱ خطی باشد، خاتمه می‌یابد؛ در غیر این صورت به ابتدای خط بعدی می‌رود.

Control-K

اگر خط خالی باشد، آن را حذف کنید؛ در غیر این صورت، تا انتهای خط را پاک کنید.

Control-L

تازه‌سازی صفحه.

Control-N

مکان‌نما پایین؛ یک خط به پایین حرکت کنید.

Control-O

یک خط خالی در محل مکان‌نما درج کنید.

Control-P

مکان‌نما به بالا؛ یک خط به بالا حرکت کنید.

اگر مکان‌نما در لبه‌ای باشد که جابه‌جایی ممکن نیست، عملیات‌های جابه‌جایی هیچ کاری انجام نمی‌دهند. مترادف‌های زیر در صورت امکان پشتیبانی می‌شوند:

ثابت

فشار کلید

KEY_LEFT

Control-B

KEY_RIGHT

Control-F

KEY_UP

Control-P

KEY_DOWN

Control-N

KEY_BACKSPACE

Control-h

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

gather()

محتوای پنجره را به‌عنوان یک رشته برمی‌گرداند؛ اینکه آیا فاصله‌های خالی درون پنجره گنجانده می‌شوند، تحت تأثیر عضو stripspaces قرار می‌گیرد.

stripspaces

این ویژگی یک پرچم است که تفسیر فاصله‌ها در پنجره را کنترل می‌کند. وقتی روشن است، فاصله‌های انتهایی هر خط نادیده گرفته می‌شوند؛ هر حرکت مکان‌نما که مکان‌نما را روی یک فاصله‌ی انتهایی قرار دهد، در عوض به انتهای آن خط می‌رود، و فاصله‌های انتهایی هنگام جمع‌آوری محتوای پنجره حذف می‌شوند.