curses --- مدیریت پایانه برای نمایشگرهای سلولنویسهای (character-cell displays)¶
کد منبع: Lib/curses
ماژول curses رابطی به کتابخانه curses فراهم میکند؛ استاندارد دوفاکتو برای مدیریت پیشرفتهی پایانه بهصورت قابلحمل.
اگرچه curses بیشترین کاربرد را در محیط یونیکس دارد، نسخههایی برای ویندوز، DOS و احتمالاً سیستمهای دیگر نیز در دسترس هستند. این ماژول توسعه بهگونهای طراحی شده است که با API کتابخانه ncurses مطابقت داشته باشد؛ ncurses یک کتابخانه curses متنباز است که روی لینوکس و نسخههای BSD یونیکس میزبانی میشود.
دسترسپذیری: not Android, not iOS, not WASI.
این ماژول در سکوهای موبایل یا سکوهای WebAssembly پشتیبانی نمیشود.
این یک ماژول اختیاری است. اگر در نسخه CPython شما موجود نیست، به مستندات توزیعکننده خود (یعنی هر کسی که پایتون را در اختیار شما قرار داده است) مراجعه کنید. اگر شما توزیعکننده هستید، نیازمندیهای ماژولهای اختیاری را ببینید.
دسترسپذیری: Unix.
توجه
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 ofputp()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 inb'\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
سمت چپ
rs
سمت راست
ts
بالا
bs
پایین
tl
گوشهی بالا-چپ
tr
گوشهی بالا-راست
bl
گوشه پایین چپ
br
گوشه پایین-راست
- 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 (seelocale.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
-1if the read is non-blocking or times out (seenodelay()andtimeout()).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 as195, then169. Useget_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 (seenotimeout()andset_escdelay()), their bytes are returned one at a time.In echo mode (see
echo()) the key is added to the window as byaddch(); 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 raiseerrorif the read is non-blocking or times out (seenodelay()andtimeout()).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 (seenotimeout()andset_escdelay()), their characters are returned one at a time.In echo mode (see
echo()) the key is added to the window as byaddch(); special keys are not echoed.اضافه شده در نسخهی 3.3.
- window.getkey([y, x])¶
Read a key press as
getch()does, but return it as astr: 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'(seekeyname()). Raiseerrorinstead of returning-1if 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 bycurses. If flag isFalse, escape sequences will be left as is in the input stream. Keypad mode is disabled by default, butwrapper()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.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()بهروزرسانی میشود.
برخی ثابتها برای تعیین ویژگیهای سلول نویسه در دسترس هستند. ثابتهای دقیقی که در دسترس هستند، به سیستم وابستهاند.
ویژگی |
معنی |
|---|---|
|
حالت مجموعهنویسهی جایگزین |
|
حالت چشمکزن |
|
حالت پررنگ |
|
حالت کمنور |
|
حالت نامرئی یا خالی |
|
حالت کج |
|
ویژگی عادی |
|
حالت محافظتشده |
|
معکوس کردن رنگهای پسزمینه و پیشزمینه |
|
حالت برجسته (Standout mode) |
|
حالت زیرخط |
|
برجستهسازی افقی |
|
برجستهسازی سمت چپ |
|
برجستهسازی کم |
|
برجستهسازی راست |
|
برجستهسازی بالا |
|
برجستهسازی عمودی |
اضافه شده در نسخهی 3.7: A_ITALIC افزوده شد.
چندین ثابت برای استخراج ویژگیهای متناظری که توسط برخی متدها برگردانده میشوند، در دسترس هستند.
نقاب بیتی |
معنی |
|---|---|
|
نقاب بیتی (bit-mask) برای استخراج ویژگیها |
|
نقاب بیتی برای استخراج یک نویسه |
|
نقاب بیتی (bit-mask) برای استخراج اطلاعات فیلد جفترنگ |
کلیدها با ثابتهای عدد صحیح با نامهایی که با KEY_ آغاز میشوند، ارجاع داده میشوند. کلیدهای دقیق موجود، به سیستم وابستهاند.
ثابت کلید |
کلید |
|---|---|
|
کمینه مقدار کلید |
|
کلید Break (غیرقابلاعتماد) |
|
فلش پایین |
|
فلش بالا |
|
پیکان چپ |
|
فلش راست |
|
کلید Home (فلش بالا+چپ) |
|
پسبر (غیرقابلاطمینان) |
|
کلیدهای تابعی. تا ۶۴ کلید تابعی پشتیبانی میشود. |
|
مقدار کلید تابعی n |
|
حذف خط |
|
درج خط |
|
نویسهی حذف |
|
درج نویسه یا ورود به حالت درج |
|
خروج از حالت درج نویسه |
|
پاککردن صفحه |
|
پاک کردن تا انتهای صفحه |
|
پاکسازی تا انتهای خط |
|
پیمایش ۱ خط به جلو |
|
پیمایش ۱ خط به عقب (معکوس) |
|
صفحه بعدی |
|
صفحه قبلی |
|
تنظیم زبانه |
|
پاککردن زبانه |
|
پاک کردن همه زبانهها |
|
Enter یا ارسال (غیرقابلاعتماد) |
|
بازنشانی نرم (جزئی) (غیرقابلاطمینان) |
|
بازنشانی یا بازنشانی سخت (غیرقابلاطمینان) |
|
چاپ |
|
Home down یا bottom (پایین سمت چپ) |
|
بالا سمت چپ صفحهکلید |
|
بالا سمت راست صفحهکلید |
|
مرکز صفحهکلید عددی |
|
پایین سمت چپ صفحهکلید عددی |
|
پایین سمت راست صفحهکلید عددی |
|
تب معکوس (Back tab) |
|
Beg (آغاز) |
|
لغو |
|
بستن |
|
Cmd (فرمان) |
|
کپی |
|
ایجاد |
|
پایان |
|
خروج |
|
یافتن |
|
راهنما |
|
نشانه |
|
پیام |
|
انتقال |
|
بعدی |
|
باز کردن |
|
گزینهها |
|
قبلی (پیشین) |
|
بازانجام |
|
مرجع (reference) |
|
تازهسازی |
|
جایگزینی |
|
راهاندازی مجدد |
|
از سرگیری |
|
ذخیره |
|
آغاز شیفتشده (Beg) |
|
لغو با Shift |
|
Command همراه با Shift |
|
کپی شیفتشده |
|
ایجاد با شیفت |
|
حذف نویسه با Shift |
|
حذف خط با Shift |
|
انتخاب |
|
End شیفتشده |
|
پاککردن خط با Shift |
|
خروج شیفتشده |
|
جستجوی Shiftدار |
|
راهنمای شیفتشده |
|
Home با Shift |
|
ورودی شیفتشده |
|
پیکان چپ همراه با Shift |
|
پیام شیفتشده |
|
جابهجایی شیفتشده |
|
بعدی شیفتشده |
|
گزینههای شیفتشده |
|
شیفتشدهی قبلی |
|
چاپ شیفتشده |
|
انجام دوباره با Shift |
|
جایگزینی با Shift |
|
پیکان راست شیفتشده |
|
ازسرگیری شیفتشده |
|
ذخیره با Shift |
|
تعلیق شیفتشده |
|
واگرد شیفتشده (Shifted Undo) |
|
تعلیق |
|
واگرد |
|
رویداد ماوس رخ داده است |
|
رویداد تغییر اندازهی پایانه |
|
حداکثر مقدار کلید |
در پایانههای 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 |
معنی |
|---|---|
|
نام جایگزین برای گوشهی بالا سمت راست |
|
بلوک مربعی توپر |
|
صفحهای از مربعها |
|
نام جایگزین برای خط افقی |
|
نام جایگزین برای گوشهی بالا سمت چپ |
|
نام جایگزین برای T بالایی (top tee) |
|
tee پایین (bottom tee) |
|
بولت (bullet) |
|
صفحه شطرنجی (stipple) |
|
فلش رو به پایین |
|
نماد درجه |
|
لوزی |
|
بزرگتر یا مساوی |
|
خط افقی |
|
نماد فانوس |
|
پیکان چپ |
|
کمتر یا مساوی |
|
گوشهی پایین سمت چپ |
|
گوشهی پایین-راست |
|
تی چپ (left tee) |
|
علامت نابرابر |
|
حرف پی |
|
علامت مثبت-منفی |
|
علامت جمع بزرگ |
|
فلش راست |
|
تی راست (right tee) |
|
خط پویش ۱ |
|
خط پویش ۳ |
|
خط پویش ۷ |
|
خط پویش ۹ |
|
نام جایگزین برای گوشه پایین راست |
|
نام جایگزین برای خط عمودی |
|
نام جایگزین برای right tee |
|
نام جایگزین برای گوشهی پایین چپ |
|
نام جایگزین برای tee پایین (bottom tee) |
|
نام جایگزین برای تی چپ (left tee) |
|
نام جایگزین برای تقاطع (crossover) یا بهعلاوهی بزرگ (big plus) |
|
پوند استرلینگ |
|
top tee |
|
پیکان بالا |
|
گوشهی بالا-چپ |
|
گوشهی بالا-راست |
|
خط عمودی |
جدول زیر ثابتهای دکمهی ماوس را که توسط getmouse() استفاده میشوند، فهرست میکند:
ثابت دکمهی ماوس |
معنی |
|---|---|
|
دکمهی n ماوس فشرده شد |
|
دکمهی ماوس n رها شد |
|
دکمهی ماوس n کلیک شد |
|
دکمه ماوس n دوبار کلیک شد |
|
دکمهی ماوس n سهبار کلیک شد |
|
کلید Shift در حین تغییر وضعیت دکمه فشرده بود |
|
کلید Control در حین تغییر وضعیت دکمه فشرده بود |
|
کلید Alt در حین تغییر وضعیت دکمه فشرده شده بود |
تغییر یافته در نسخهی 3.10: ثابتهای BUTTON5_* اکنون در صورتی که توسط کتابخانه curses زیرین ارائه شده باشند، در دسترس قرار میگیرند.
جدول زیر رنگهای از پیش تعریفشده را فهرست میکند:
ثابت |
رنگ |
|---|---|
|
سیاه |
|
آبی |
|
فیروزهای (آبی مایل به سبز روشن) |
|
سبز |
|
سرخابی (قرمز مایل به بنفش) |
|
قرمز |
|
سفید |
|
زرد |
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
مکاننما به بالا؛ یک خط به بالا حرکت کنید.
اگر مکاننما در لبهای باشد که جابهجایی ممکن نیست، عملیاتهای جابهجایی هیچ کاری انجام نمیدهند. مترادفهای زیر در صورت امکان پشتیبانی میشوند:
ثابت
فشار کلید
Control-B
Control-F
Control-P
Control-N
Control-h
همهی کلیدفشارهای دیگر بهعنوان فرمانی برای درج نویسهی دادهشده و حرکت به راست (با پیچیدن خط) تلقی میشوند.
- gather()¶
محتوای پنجره را بهعنوان یک رشته برمیگرداند؛ اینکه آیا فاصلههای خالی درون پنجره گنجانده میشوند، تحت تأثیر عضو
stripspacesقرار میگیرد.
- stripspaces¶
این ویژگی یک پرچم است که تفسیر فاصلهها در پنجره را کنترل میکند. وقتی روشن است، فاصلههای انتهایی هر خط نادیده گرفته میشوند؛ هر حرکت مکاننما که مکاننما را روی یک فاصلهی انتهایی قرار دهد، در عوض به انتهای آن خط میرود، و فاصلههای انتهایی هنگام جمعآوری محتوای پنجره حذف میشوند.