شنبه ۲۹ دي ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

آموزش پایتون - متن

ویجت‌های متن (Text widgets) امکانات پیشرفته‌ای ارائه می‌دهند که به شما اجازه می‌دهند یک متن چندخطی را ویرایش کنید و روش نمایش آن را فرمت‌بندی کنید، مانند تغییر رنگ و فونت آن.

همچنین می‌توانید از ساختارهایی مانند تب‌ها و نشانه‌ها (tabs and marks) برای پیدا کردن بخش‌های خاص متن و اعمال تغییرات بر روی این بخش‌ها استفاده کنید. علاوه بر این، می‌توانید پنجره‌ها و تصاویر را درون متن جاسازی کنید، این ویجت برای کنترل هر دو نوع متن ساده و فرمت‌بندی شده طراحی شده است.

نحوه‌ی استفاده

اینجا نحوه‌ نوشتار برای ایجاد این ویجت آورده شده است:

w = Text ( master, option, ... )

پارامترها (Parameters)

  • master − این نمایانگر پنجره والد (پنجره اصلی) می‌باشد.

  • options − اینجا لیستی از بیشترین گزینه‌های استفاده‌شده برای این ویجت آمده است.

ردیف گزینه و توضیحات
1

bg (پس‌زمینه)

رنگ پیش‌فرض پس‌زمینه ویجت متن.

2

bd (حاشیه)

عرض حاشیه‌ای که اطراف ویجت متن قرار می‌گیرد. مقدار پیش‌فرض 2 پیکسل است.

3

cursor (نشانگر)

نشانگری که ظاهر می‌شود وقتی موس بر روی ویجت متن قرار می‌گیرد.

4

exportselection 

به طور معمول، متنی که درون ویجت متن انتخاب می‌شود به عنوان انتخاب در پنجره اصلی می باشد. اگر نمی‌خواهید این رفتار را داشته باشید، مقدار exportselection=0 را تنظیم کنید.

5

font (قلم)

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

6

fg (رنگ‌متن)

رنگ استفاده‌شده برای متن درون ویجت. شما می‌توانید رنگ مناطق تگ‌شده را تغییر دهید؛ این گزینه فقط مقدار پیش‌فرض است.

7

height (ارتفاع)

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

8

highlightbackground (رنگ‌برجسته-پس‌زمینه)

رنگ برجسته‌سازی فوکوس وقتی ویجت متن فوکوس ندارد.

9

highlightcolor (رنگ‌برجسته)

رنگ برجسته‌سازی فوکوس وقتی ویجت متن فوکوس دارد.

10

highlightthickness (ضخامت‌برجسته)

ضخامت برجسته‌سازی فوکوس. مقدار پیش‌فرض 1 است. برای حذف نمایش برجسته‌سازی فوکوس، مقدار highlightthickness=0 را تنظیم کنید.

11

insertbackground (رنگ‌درج)

رنگ نشانگر درج. مقدار پیش‌فرض آن سیاه است.

12

insertborderwidth (عرض‌حاشیه‌درج)

اندازه حاشیه ۳‌بعدی اطراف نشانگر درج. مقدار پیش‌فرض 0 است.

13

insertofftime (زمان‌خاموشی‌درج)

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

14

insertontime (زمان‌روشنی‌درج)

تعداد میلی‌ثانیه‌هایی که نشانگر درج در طول چرخه‌ی چشمک روشن است. مقدار پیش‌فرض 600 است.

15

insertwidth (عرض‌درج)

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

16

padx (حاشیه‌داخلی-افقی)

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

17

pady (حاشیه‌داخلی-عمودی)

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

18

relief 

ظاهر ۳‌بعدی ویجت متن. مقدار پیش‌فرض relief=SUNKEN است.

19

selectbackground (رنگ-انتخاب)

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

20

selectborderwidth (عرض-حاشیه-انتخاب)

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

21

spacing1 (فاصله-بین‌خطوط1)

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

22

spacing2 (فاصله-بین‌خطوط2)

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

23

spacing3 (فاصله-بین‌خطوط3)

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

24

state (وضعیت)

به طور معمول، ویجت‌های متن به رویدادهای صفحه کلید و موس پاسخ می‌دهند؛ برای به دست‌آوردن این رفتار state=NORMAL را تنظیم کنید. اگر state=DISABLED را تنظیم کنید، ویجت متن پاسخ نخواهد داد و شما نمی‌توانید محتویات آن را به صورت برنامه‌ای تغییر دهید.

25

tabs (زبانه‌ها)

این گزینه کنترل می‌کند که کاراکترهای تب موقعیت متن را چگونه قرار می‌دهد.

26

width (عرض)

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

27

wrap (شکستن)

این گزینه کنترل می‌کند نمایش خط‌هایی که بسیار پهن هستند. با تنظیم wrap=WORD، خط‌ها بعد از آخرین کلمه‌ای که جا دارد شکسته می‌شوند. با رفتار پیش‌فرض، wrap=CHAR، هر خطی که بیش از حد طولانی شود، به هر نقطه‌ای شکسته می‌شود.

28

xscrollcommand (دستورالعمودی)

برای ایجاد امکان پیمایش افقی ویجت متن، این گزینه را به متد set() اسکرول‌بار افقی تنظیم کنید.

29

yscrollcommand (دستورافقی)

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

متدها (Methods)

اشیاء متن (Text objects) این متدها را دارند −

ردیف متدها و توضیحات
1

delete(startindex [,endindex]) (حذف)

این متد یک کاراکتر خاص یا محدوده‌ای از متن را حذف می‌کند.

2

get(startindex [,endindex]) (گرفتن)

این متد یک کاراکتر خاص یا محدوده‌ای از متن را برمی‌گرداند.

3

index(index) 

مقدار مطلق یک اندیس بر اساس اندیس داده‌شده را برمی‌گرداند.

4

insert(index [,string]...) (درج)

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

5

see(index) (نمایش)

اگر متن موجود در محل اندیس، قابل مشاهده باشد، این متد مقدار true برمی‌گرداند.

ویجت‌های متن، سه ساختار کمکی متمایز دارند: نشانه‌ها (Marks)، تب‌ها (Tabs) و اندیس‌ها (Indexes) −

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

ردیف متدها و توضیحات
1

index(mark) (اندیس)

موقعیت خط و ستون یک نشانه خاص را برمی‌گرداند.

2

mark_gravity(mark [,gravity]) (جاذبه-نشانه)

جاذبه نشانه داده‌شده را برمی‌گرداند. اگر آرگومان دوم ارائه شود، جاذبه برای نشانه داده‌شده تنظیم می‌شود.

3

mark_names() (نام‌نشانه‌ها)

تمام نشانه‌ها از ویجت متن را برمی‌گرداند.

4

mark_set(mark, index) (تنظیم-اندیس-نشانه)

موقعیت جدیدی را به نشانه داده‌شده اطلاع می‌دهد.

5

mark_unset(mark) (بی‌اثرسازی-نشانه)

نشانه داده‌شده را از ویجت متن حذف و بی‌اثر می‌کند.

برچسب‌ها (Tags) برای انتساب نام به نواحی متنی استفاده می‌شوند و این کار تغییرات مرتبط با تنظیمات نمایش بخش‌های خاص متن را آسان می‌کند. همچنین برچسب‌ها برای اتصال تعاملات رویداد به دامنه‌های خاص متنی نیز استفاده می‌شوند.

متدهای موجود برای کنترل تب‌ها (Tabs) به شرح زیر هستند −

ردیف متدها و توضیحات
1

tag_add(tagname, startindex[,endindex] ...) (اضافه‌کردن-برچسب)

این متد یک برچسب به موقعیتی که توسط اندیس startindex تعیین می‌شود، یا به یک محدوده که توسط اندیس‌های startindex و endindex تعیین می‌شود، اضافه می‌کند.

2

tag_config

شما می‌توانید از این متد برای پیکربندی خصوصیات برچسب استفاده کنید که شامل justify (وسط، چپ یا راست)، tabs (این ویژگی مانند ویژگی tabs ویجت متن است) و underline (استفاده برای زیرخط کشیدن متن برچسب‌دار) می‌شود.

3

tag_delete(tagname) (حذف-برچسب)

این متد برای حذف و برداشتن یک برچسب داده‌شده استفاده می‌شود.

4

tag_remove(tagname [,startindex[.endindex]] ...) (برداشتن-برچسب)

پس از اعمال این متد، برچسب داده‌شده از ناحیه ارائه‌شده بدون حذف تعریف برچسب حذف می‌شود.

مثال 

مثال زیر را امتحان کنید −

from tkinter import *

def onclick():
   pass

root = Tk()
text = Text(root)
text.insert(INSERT, "Hello.....")
text.insert(END, "Bye Bye.....")
text.pack()

text.tag_add("here", "1.0", "1.4")
text.tag_add("start", "1.8", "1.13")
text.tag_config("here", background="yellow", foreground="blue")
text.tag_config("start", background="black", foreground="green")
root.mainloop()

وقتی کد بالا اجرا می‌شود، نتیجه‌ی زیر را تولید می‌کند −

TK Text