tkinter.ttk --- ابزارکهای دارای پوستهی Tk¶
کد منبع: Lib/tkinter/ttk.py
ماژول tkinter.ttk دسترسی به مجموعه ابزارکهای پوستهدار Tk را فراهم میکند که در Tk 8.5 معرفی شد. ابزارکهای این ماژول ظاهر خود را با پوستهی بومی سکو تطبیق میدهند و به برنامه ظاهر و حسی بهتر و یکدستتر از ابزارکهای کلاسیک tkinter میبخشند که ظاهر آنها ثابت است.
ایدهی اصلی برای tkinter.ttk این است که، تا حد امکان، کد پیادهسازی رفتار یک ابزارک از کد پیادهسازی ظاهر آن جدا شود.
ابزارکهای Ttk دقیقاً مانند ابزارکهای کلاسیک tkinter استفاده میشوند و از همان سازوکار بهره میبرند: سلسلهمراتب ابزارک، مدیران هندسه، جفتسازی متغیر و اتصال رویداد. آن مفاهیم بنیادی در مستندات tkinter پوشش داده شدهاند و در اینجا تکرار نشدهاند.
اضافه شده در نسخهی 3.1.
همچنین ملاحظه نمائید
- پشتیبانی از سبکدهی ابزارکهای Tk (TIP #48)
پیشنهاد بهبود Tcl که موتور سبکدهی ابزارکهای پوستهدار را معرفی کرد.
استفاده از Ttk¶
برای شروع استفاده از Ttk، ماژول آن را ایمپورت کنید:
from tkinter import ttk
برای بازنویسی ابزارکهای پایهی Tk، ایمپورت باید پس از ایمپورت Tk انجام شود:
from tkinter import *
from tkinter.ttk import *
آن کد باعث میشود چندین ابزارک tkinter.ttk (Button، Checkbutton، Entry، Frame، Label، LabelFrame، Menubutton، OptionMenu، PanedWindow، Radiobutton، Scale، Scrollbar و Spinbox) بهطور خودکار جایگزین ابزارکهای Tk شوند.
توجه
جایگزینی ابزارکهای کلاسیک با from tkinter.ttk import * برای سازگار کردن کد موجود مناسب است، اما کد جدید معمولاً زمانی واضحتر است که ماژول را بهصورت from tkinter import ttk ایمپورت کند و به ابزارکهای پوستهدار بهصورت صریح ارجاع دهد، مانند ttk.Button.
این امر مزیت مستقیم استفاده از ابزارکهای جدید را به همراه دارد و ظاهر و رفتار بهتری در سکوهای مختلف ارائه میدهد؛ با این حال، ابزارکهای جایگزین کاملاً سازگار نیستند. تفاوت اصلی این است که گزینههای ابزارک مانند fg، bg و سایر گزینههای مربوط به سبکدهی ابزارک، دیگر در ابزارکهای Ttk وجود ندارند. در عوض، برای جلوههای سبکدهی بهبودیافته از کلاس ttk.Style استفاده کنید.
ابزارکهای Ttk¶
Ttk دارای ۱۸ ابزارک است که دوازدهتا از آنها از قبل در tkinter وجود داشتند: Button، Checkbutton، Entry، Frame، Label، LabelFrame، Menubutton، PanedWindow، Radiobutton، Scale، Scrollbar و Spinbox. ششتای دیگر جدید هستند: Combobox، Notebook، Progressbar، Separator، Sizegrip و Treeview. همهی آنها زیرکلاسهایی از Widget هستند.
استفاده از ابزارکهای Ttk، ظاهر و رفتار برنامه را بهبود میبخشد. همانطور که در بالا بحث شد، تفاوتهایی در نحوه کدنویسی سبکدهی وجود دارد.
کد Tk:
l1 = tkinter.Label(text="Test", fg="black", bg="white")
l2 = tkinter.Label(text="Test", fg="black", bg="white")
کد Ttk:
style = ttk.Style()
style.configure("BW.TLabel", foreground="black", background="white")
l1 = ttk.Label(text="Test", style="BW.TLabel")
l2 = ttk.Label(text="Test", style="BW.TLabel")
برای اطلاعات بیشتر درباره TtkStyling، مستندات کلاس Style را ببینید.
ابزارک¶
ttk.Widget گزینهها و متدهای استاندارد پشتیبانیشده توسط ابزارکهای Tk پوستهدار را تعریف میکند و قرار نیست بهطور مستقیم نمونهسازی شود.
گزینههای استاندارد¶
همه ابزارکهای ttk گزینههای زیر را میپذیرند:
گزینه |
توضیحات |
|---|---|
کلاس |
کلاس پنجره را مشخص میکند. این کلاس هنگام پرسوجو از پایگاه دادهی گزینهها (option database) برای سایر گزینههای پنجره، برای تعیین برچسبهای اتصال (bindtags) پیشفرض پنجره و انتخاب چیدمان و سبک پیشفرض ابزارک استفاده میشود. این گزینه فقطخواندنی است و تنها در زمان ایجاد پنجره قابل تعیین است. |
مکاننما |
مکاننما ماوس مورد استفاده برای ابزارک را مشخص میکند. نوع گزینهی cursor را در انواع دادهی گزینههای Tk ببینید. اگر روی رشتهی خالی (پیشفرض) تنظیم شود، مکاننما از ابزارک والد به ارث میرسد. |
takefocus |
تعیین میکند که آیا پنجره در حین پیمایش با صفحهکلید فوکوس را میپذیرد یا خیر. ۰، ۱ یا یک رشتهی خالی برگردانده میشود. اگر ۰ برگردانده شود، به این معناست که پنجره باید در حین پیمایش با صفحهکلید بهطور کامل نادیده گرفته شود. اگر ۱ برگردانده شود، به این معناست که پنجره باید تا زمانی که قابل مشاهده است، فوکوس ورودی را دریافت کند. و رشتهی خالی به این معناست که اسکریپتهای پیمایش تصمیم میگیرند که آیا فوکوس به پنجره داده شود یا خیر. |
سبک |
میتواند برای تعیین یک سبک سفارشی ابزارک استفاده شود. |
گزینههای ابزارک پیمایشپذیر¶
ابزارکهایی که با نوار پیمایش کنترل میشوند، از گزینههای زیر پشتیبانی میکنند.
گزینه |
توضیحات |
|---|---|
xscrollcommand |
برای ارتباط با نوارهای پیمایش افقی استفاده میشود. هنگامی که نمای درون پنجرهی ابزارک تغییر میکند، ابزارک کالبک xscrollcommand را فراخوانی میکند. معمولاً این گزینه شامل متد |
yscrollcommand |
برای برقراری ارتباط با نوارهای پیمایش عمودی استفاده میشود. برای اطلاعات بیشتر، به بالا مراجعه کنید. |
گزینههای برچسب¶
گزینههای زیر توسط برچسبها، دکمهها و سایر ابزارکهای دکمهمانند پشتیبانی میشوند.
گزینه |
توضیحات |
|---|---|
متن |
یک رشته متنی را برای نمایش درون ابزارک مشخص میکند. |
textvariable |
نامی را مشخص میکند که مقدار آن بهجای منبع گزینهی متنی استفاده خواهد شد. |
زیرخط |
در صورت تنظیم، اندیس (مبنای ۰) نویسهای را که باید در رشتهی متن زیرخطدار شود مشخص میکند. نویسهی زیرخطدار برای فعالسازی یادآور (mnemonic activation) استفاده میشود. |
تصویر |
یک تصویر را برای نمایش مشخص میکند. این فهرستی از ۱ یا چند عنصر است. اولین عنصر، نام تصویر پیشفرض است. بقیهی فهرست، دنبالهای از جفتهای statespec/value است که توسط |
مرکب |
نحوهی نمایش تصویر نسبت به متن را در صورتی که هر دو گزینهی متن و تصویر موجود باشند، مشخص میکند. مقادیر معتبر عبارتند از:
|
عرض |
اگر بزرگتر از صفر باشد، مشخص میکند که چه مقدار فضا، بر حسب عرض نویسه، برای برچسب متنی اختصاص یابد؛ اگر کوچکتر از صفر باشد، حداقل عرض را مشخص میکند. اگر صفر باشد یا مشخص نشده باشد، عرض طبیعی برچسب متنی استفاده میشود. |
گزینههای سازگاری¶
گزینه |
توضیحات |
|---|---|
وضعیت |
میتوان آن را روی "normal" یا "disabled" تنظیم کرد تا بیت وضعیت "disabled" را کنترل کند. این یک گزینهی فقطنوشتنی است: تنظیم آن وضعیت ابزارک را تغییر میدهد، اما متد |
وضعیتهای ابزارک¶
وضعیت ابزارک، یک بیتمپ از پرچمهای وضعیت مستقل است.
پرچم |
توضیحات |
|---|---|
فعال |
مکاننما ماوس روی ابزارک قرار دارد و فشردن دکمهای از ماوس باعث وقوع عملی میشود |
غیرفعال |
ابزارک تحت کنترل برنامه غیرفعال است |
تمرکز |
ابزارک دارای فوکوس صفحهکلید است |
فشردهشده |
ابزارک در حال فشردهشدن است |
انتخابشده |
"On"، "true" یا "current" برای مواردی مانند Checkbuttons و radiobuttons |
پسزمینه |
ویندوز و مک مفهومی به نام پنجره «فعال» یا پیشزمینه دارند. وضعیت پسزمینه برای ابزارکهای موجود در یک پنجره پسزمینه تنظیم میشود و برای ابزارکهای موجود در پنجره پیشزمینه پاک میشود |
فقط خواندنی |
ابزارک نباید به کاربر اجازهی تغییر بدهد |
جایگزین |
یک قالب نمایش جایگزین مختص ابزارک |
نامعتبر |
مقدار ابزارک نامعتبر است |
یک مشخصه وضعیت، دنبالهای از نامهای وضعیت است که بهصورت اختیاری با یک علامت تعجب پیشوند داده میشود و نشان میدهد بیت خاموش است.
ttk.Widget¶
علاوه بر متدهای توصیفشده در زیر، ttk.Widget از متدهای tkinter.Widget.cget و tkinter.Widget.configure پشتیبانی میکند.
- class tkinter.ttk.Widget¶
- identify(x, y)¶
نام المان در موقعیت x y را برمیگرداند، یا اگر نقطه درون هیچ المانی قرار نداشته باشد، رشته خالی را برمیگرداند.
x و y مختصات پیکسلی نسبت به ابزارک هستند.
- instate(statespec, callback=None, *args, **kw)¶
وضعیت ابزارک را آزمایش میکند. اگر کالبکی مشخص نشده باشد، در صورتی که وضعیت ابزارک با statespec مطابقت داشته باشد
Trueو در غیر این صورتFalseبرمیگرداند. اگر کالبکی مشخص شده باشد، در صورتی که وضعیت ابزارک با statespec مطابقت داشته باشد، با آرگومانها فراخوانی میشود.
- state(statespec=None)¶
تغییر یا پرسوجوی وضعیت ابزارک. اگر statespec تعیینشده باشد، وضعیت ابزارک را مطابق آن تنظیم میکند و یک statespec جدید برمیگرداند که نشان میدهد کدام پرچمها تغییر کردهاند. اگر statespec تعییننشده باشد، پرچمهای وضعیت را که در حال حاضر فعال هستند برمیگرداند.
نباید با
Wm.stateاشتباه گرفته شود.
statespec معمولاً یک فهرست یا تاپل است.
جعبه انتخاب (Combobox)¶
ابزارک ttk.Combobox یک فیلد متنی را با فهرستی بازشونده از مقادیر ترکیب میکند. این ابزارک زیرکلاسی از Entry است.
علاوه بر متدهایی که از Widget به ارث رسیدهاند: cget()، configure()، identify()، instate() و state()، و متدهای زیر که از Entry به ارث رسیدهاند: bbox()، delete()، icursor()، index()، insert()، selection*، xview*، متدهای دیگری نیز دارد که در ttk.Combobox توضیح داده شدهاند.
گزینهها¶
این ابزارک گزینههای خاص زیر را میپذیرد:
گزینه |
توضیحات |
|---|---|
exportselection |
مقدار بولی. اگر تنظیم شود، انتخاب ابزارک به انتخاب X پیوند میخورد (که برای مثال میتوان با فراخوانی Misc.selection_get آن را برگرداند). |
همتراز |
مشخص میکند که متن چگونه درون ابزارک تراز میشود. یکی از "left"، "center" یا "right". |
ارتفاع |
ارتفاع جعبهفهرست بازشو را بر حسب ردیف مشخص میکند. |
postcommand |
اسکریپتی (که ممکن است با Misc.register ثبتشده باشد) که بلافاصله پیش از نمایش مقدارها فراخوانی میشود. این اسکریپت میتواند مشخص کند کدام مقدارها نمایش داده شوند. |
وضعیت |
یکی از "normal"، "readonly" یا "disabled". در حالت "readonly"، نمیتوان مقدار را مستقیماً ویرایش کرد و کاربر فقط میتواند یکی از مقدارها را از فهرست بازشو انتخاب کند. در حالت "normal"، فیلد متنی مستقیماً قابل ویرایش است. در حالت "disabled"، هیچ تعاملی ممکن نیست. |
textvariable |
نامی را مشخص میکند که مقدار آن به مقدار ابزارک پیوند داده شده است. هر زمان که مقدار مرتبط با آن نام تغییر کند، مقدار ابزارک بهروزرسانی میشود و برعکس. |
مقادیر |
فهرست مقادیر را برای نمایش در جعبهفهرست بازشو مشخص میکند. |
عرض |
مقدار عدد صحیحی را مشخص میکند که عرض دلخواه پنجره ورودی را بر حسب نویسههای با اندازه متوسط قلم ابزارک نشان میدهد. |
توجه
Tk 9.1 گزینهی locale را افزود، که locale مورد استفاده برای تعیین مرزهای واژهای و نویسهای درون متن را انتخاب میکند (بهطور پیشفرض "C").
رویدادهای مجازی¶
ابزارک جعبه انتخاب هنگامی که کاربر عنصری را از فهرست مقادیر انتخاب میکند، یک رویداد مجازی <<ComboboxSelected>> را تولید میکند.
ttk.Combobox¶
- class tkinter.ttk.Combobox¶
- current(newindex=None)¶
اگر newindex مشخص شده باشد، مقدار جعبه انتخاب را روی عنصر در موقعیت newindex تنظیم میکند. در غیر این صورت، اندیس مقدار فعلی یا -۱ را در صورتی که مقدار فعلی در فهرست مقادیر نباشد، برمیگرداند.
- get()¶
مقدار فعلی جعبه انتخاب را برمیگرداند.
- set(value)¶
مقدار جعبه انتخاب را روی value تنظیم میکند.
اسپینباکس (Spinbox)¶
ابزارک ttk.Spinbox یک ttk.Entry است که با پیکانهای افزایش و کاهش تقویتشده است. میتوان از آن برای اعداد یا فهرستهایی از مقادیر رشتهای استفاده کرد. این ابزارک یک کلاس فرعی از Entry است. علاوه بر متدهایی که از Widget به ارث رسیدهاند: cget()، configure()، identify()، instate() و state()، و متدهای زیر که از Entry به ارث رسیدهاند: bbox()، delete()، icursor()، index()، insert()، xview*، این ابزارک متدهای دیگری نیز دارد که در ttk.Spinbox توضیح داده شدهاند.
گزینهها¶
این ابزارک گزینههای خاص زیر را میپذیرد:
گزینه |
توضیحات |
|---|---|
از |
مقدار شناور. اگر تنظیم شود، این حداقل مقداری است که دکمه کاهش، مقدار را تا آن کاهش میدهد. هنگام استفاده بهعنوان آرگومان، باید بهصورت |
به |
مقدار اعشاری. اگر تنظیم شده باشد، این حداکثر مقداری است که دکمه افزایش، مقدار را تا آن افزایش میدهد. |
افزایش |
مقدار شناور. میزانی را مشخص میکند که دکمههای افزایش/کاهش، مقدار را با آن تغییر میدهند. پیشفرض آن ۱.۰ است. |
مقادیر |
دنبالهای از مقادیر رشته یا اعشاری. در صورت تعیین شدن، دکمههای افزایش/کاهش به جای افزایش یا کاهش اعداد، بهصورت چرخهای بین آیتمهای این دنباله جابهجا میشوند. |
دربرگرفتن |
مقدار بولی. اگر |
قالب |
مقدار رشتهای. این مقدار قالب اعدادی را که با دکمههای افزایش/کاهش تنظیم میشوند مشخص میکند. این مقدار باید به شکل "%W.Pf" باشد، که در آن W عرض مقدار با پرکننده، P دقت، و '%' و 'f' نویسههای لفظی هستند. |
فرمان |
فراخوانیپذیر پایتون. هرگاه یکی از دکمههای افزایش یا کاهش فشرده شود، بدون آرگومان فراخوانی خواهد شد. |
رویدادهای مجازی¶
ابزارک اسپینباکس هنگامی که کاربر <Up> را فشار میدهد، یک رویداد مجازی <<Increment>> و هنگامی که کاربر <Down> را فشار میدهد، یک رویداد مجازی <<Decrement>> تولید میکند.
ttk.Spinbox¶
- class tkinter.ttk.Spinbox¶
در صورت استفاده از مقدار افزایش غیر عدد صحیح، مقادیر عددی و locale را ببینید.
اضافه شده در نسخهی 3.8.
- get()¶
مقدار فعلی اسپینباکس را برمیگرداند.
- set(value)¶
مقدار اسپینباکس را روی value تنظیم میکند.
نوتبوک¶
ابزارک Ttk Notebook مجموعهای از پنجرهها را مدیریت میکند و در هر زمان فقط یکی را نمایش میدهد. هر پنجرهی فرزند با یک زبانه مرتبط است که کاربر میتواند آن را برای تغییر پنجرهی در حال نمایش انتخاب کند.
گزینهها¶
این ابزارک گزینههای خاص زیر را میپذیرد:
گزینه |
توضیحات |
|---|---|
ارتفاع |
در صورت وجود و بزرگتر بودن از صفر، ارتفاع مطلوب ناحیهی بخش را تعیین میکند (بدون احتساب فاصلهگذاری داخلی یا زبانهها). در غیر این صورت، از بیشینهی ارتفاع همهی بخشها استفاده میشود. |
پرکننده (padding) |
مقدار فضای اضافی را که باید به اطراف بیرونی notebook اضافه شود، مشخص میکند. فاصلهگذاری (padding) فهرستی از حداکثر چهار مشخصهی طول برای چپ، بالا، راست و پایین است. اگر کمتر از چهار عنصر مشخص شود، پایین بهطور پیشفرض مقدار بالا، راست مقدار چپ، و بالا مقدار چپ را میگیرد. |
عرض |
اگر موجود و بزرگتر از صفر باشد، عرض مطلوب ناحیهی بخش (pane) را مشخص میکند (بدون احتساب فاصلهگذاری داخلی). در غیر این صورت، حداکثر عرض همهی بخشها استفاده میشود. |
گزینههای زبانه¶
برای تبها نیز گزینههای ویژهای وجود دارد:
گزینه |
توضیحات |
|---|---|
وضعیت |
یکی از "normal"، "disabled" یا "hidden". اگر "disabled" باشد، زبانه قابل انتخاب نیست. اگر "hidden" باشد، زبانه نمایش داده نمیشود. |
چسبان |
نحوهی قرارگیری پنجرهی فرزند درون ناحیهی بخش را مشخص میکند. مقدار آن رشتهای است که شامل صفر یا چند نویسه از میان "n"، "s"، "e" یا "w" است. هر حرف به یک ضلع (شمال، جنوب، شرق یا غرب) اشاره دارد که پنجرهی فرزند، مطابق مدیر چیدمان |
پرکننده (padding) |
مقدار فضای اضافی را که باید بین نوتبوک (notebook) و این بخش افزوده شود، مشخص میکند. سینتکس آن همانند گزینهی padding است که این ابزارک از آن استفاده میکند. |
متن |
متنی را برای نمایش در زبانه تعیین میکند. |
تصویر |
تصویری را برای نمایش در زبانه مشخص میکند. گزینهی image را که در |
مرکب |
نحوهی نمایش تصویر نسبت به متن را در صورتی که هر دو گزینهی متن و تصویر موجود باشند، مشخص میکند. برای مقادیر مجاز، Label Options را ببینید. |
زیرخط |
اندیس (مبنای ۰) نویسهای را که باید در رشتهی متن زیرخطدار شود، مشخص میکند. اگر |
شناسههای زبانه¶
tab_id موجود در چندین متدِ ttk.Notebook میتواند هر یک از شکلهای زیر را داشته باشد:
یک عدد صحیح بین ۰ و تعداد تبها
نام یک پنجرهی فرزند
یک مشخصهی جایگاهی به شکل «@x,y»، که زبانه را شناسایی میکند
رشتهی لفظی "current"، که زبانهی انتخابشدهی کنونی را مشخص میکند
رشتهی لفظی "end"، که تعداد زبانهها را برمیگرداند (فقط برای
Notebook.index()معتبر است)
رویدادهای مجازی¶
این ابزارک پس از انتخاب یک زبانهی جدید، رویداد مجازی <<NotebookTabChanged>> را تولید میکند.
ttk.Notebook¶
- class tkinter.ttk.Notebook¶
- add(child, **kw)¶
یک زبانهی جدید به نوتبوک اضافه میکند.
اگر پنجره در حال حاضر توسط نوتبوک مدیریت شود اما پنهان باشد، به موقعیت پیشین خود بازگردانده میشود.
برای دیدن فهرست گزینههای موجود، Tab Options را ببینید.
- forget(tab_id)¶
زبانهی مشخصشده با tab_id را حذف میکند و پنجرهی مرتبط را از نگاشت و مدیریت خارج میکند.
این متد،
forget()موروثیِ مدیر چیدمان را میپوشاند؛ برای حذف خود ابزارک از مدیر آن، ازpack_forget()،grid_forget()یاplace_forget()استفاده کنید.
- hide(tab_id)¶
زبانهی مشخصشده با tab_id را پنهان میکند.
زبانه نمایش داده نخواهد شد، اما پنجرهی مرتبط همچنان توسط نوتبوک مدیریت میشود و پیکربندی آن به خاطر سپرده میشود. زبانههای مخفی را میتوان با دستور
add()بازیابی کرد.
- identify(x, y)¶
نام عنصر تب را در موقعیت x، y برمیگرداند، یا اگر هیچ عنصری وجود نداشته باشد، رشتهی خالی را برمیگرداند.
- index(tab_id)¶
اندیس عددی زبانهی مشخصشده با tab_id را برمیگرداند، یا اگر tab_id رشتهی "end" باشد، تعداد کل زبانهها را برمیگرداند.
- insert(pos, child, **kw)¶
یک بخش را در موقعیت مشخصشده درج میکند.
pos یکی از این موارد است: رشتهی "end"، یک اندیس عدد صحیح، یا نام یک فرزند مدیریتشده. اگر child از قبل تحت مدیریت نوتبوک باشد، آن را به جایگاه مشخصشده جابهجا میکند.
برای دیدن فهرست گزینههای موجود، Tab Options را ببینید.
- select(tab_id=None)¶
tab_id مشخصشده را انتخاب میکند.
پنجره فرزند مرتبط نمایش داده خواهد شد، و پنجره انتخابشده پیشین (در صورت متفاوت بودن) از نمایش برداشته میشود. اگر tab_id ذکر نشود، نام ابزارک بخش انتخابشده کنونی را برمیگرداند.
- tab(tab_id, option=None, **kw)¶
گزینههای مربوط به tab_id مشخص را پرسوجو یا تغییر دهید.
اگر kw داده نشود، یک دیکشنری از مقادیر گزینههای زبانه را برمیگرداند. اگر option مشخص شده باشد، مقدار آن option را برمیگرداند. در غیر این صورت، گزینهها را روی مقادیر متناظر تنظیم میکند.
- tabs()¶
تاپلی از پنجرههای تحت مدیریت نوتبوک را برمیگرداند.
- enable_traversal()¶
فعالسازی پیمایش با صفحهکلید برای یک پنجرهی سطح بالا که حاوی این دفترچه است.
این کار اتصالهای پنجرهی سطح بالا حاوی notebook را بهصورت زیر گسترش میدهد:
Control-Tab: زبانهی پس از زبانهی انتخابشدهی کنونی را انتخاب میکند.
Shift-Control-Tab: زبانهی پیش از زبانهی انتخابشدهی کنونی را انتخاب میکند.
Alt-K: که در آن K نویسهی یادآور (mnemonic) و زیرخطدار هر زبانه است، آن زبانه را انتخاب میکند.
میتوان چندین نوتبوک را در یک سطح بالا واحد برای پیمایش (traversal) فعال کرد، از جمله نوتبوکهای تودرتو. با این حال، پیمایش نوتبوک تنها در صورتی بهدرستی کار میکند که همه بخشها (panes) فرزندان مستقیم نوتبوک باشند.
نوار پیشرفت¶
ابزارک ttk.Progressbar وضعیت یک عملیات طولانیمدت را نشان میدهد. این ابزارک میتواند در دو حالت کار کند: ۱) حالت مشخص که مقدار تکمیلشده را نسبت به کل مقدار کاری که باید انجام شود نشان میدهد و ۲) حالت نامشخص که نمایشی متحرک ارائه میکند تا کاربر بداند کار در حال پیشرفت است.
گزینهها¶
این ابزارک گزینههای خاص زیر را میپذیرد:
گزینه |
توضیحات |
|---|---|
جهتدهی |
یکی از «horizontal» یا «vertical». جهت نوار پیشرفت را مشخص میکند. |
طول |
طول محور بلند نوار پیشرفت را مشخص میکند (عرض در حالت افقی، ارتفاع در حالت عمودی). |
حالت |
یکی از «determinate» یا «indeterminate». |
بیشینه |
عددی که حداکثر مقدار را مشخص میکند. پیشفرض آن ۱۰۰ است. |
مقدار |
مقدار فعلی نوار پیشرفت. در حالت «تعیینشده»، این مقدار نشاندهندهی میزان کار انجامشده است. در حالت «تعییننشده»، بهصورت باقیماندهی تقسیم بر maximum تفسیر میشود؛ یعنی نوار پیشرفت هنگامی که مقدار آن به اندازهی maximum افزایش یابد، یک «چرخه» را کامل میکند. |
متغیر |
نامی که به مقدار گزینه پیوند دارد. اگر مشخص شود، مقدار نوار پیشرفت بهطور خودکار هر زمان که این نام تغییر کند، به مقدار آن تنظیم میشود. |
مرحله |
گزینه فقط خواندنی. ابزارک بهطور دورهای مقدار این گزینه را هر زمان که مقدار آن بزرگتر از ۰ و، در حالت قطعی، کمتر از حداکثر باشد، افزایش میدهد. این گزینه ممکن است توسط پوسته فعلی برای ایجاد جلوههای پویانمایی بیشتر استفاده شود. |
ttk.Progressbar¶
- class tkinter.ttk.Progressbar¶
- start(interval=None)¶
آغاز حالت افزایش خودکار (autoincrement): یک رویداد زمانسنج دورهای را زمانبندی میکند که
Progressbar.step()را هر interval میلیثانیه فراخوانی میکند. در صورت حذف، interval بهطور پیشفرض ۵۰ میلیثانیه است.
- step(amount=None)¶
مقدار نوار پیشرفت را به اندازهی amount افزایش میدهد.
در صورت حذف، amount بهطور پیشفرض 1.0 خواهد بود.
- stop()¶
توقف حالت افزایش خودکار: هر رویداد زمانسنج تکرارشوندهای را که توسط
Progressbar.start()برای این نوار پیشرفت آغاز شده باشد، لغو میکند.
جداکننده¶
ابزارک ttk.Separator یک نوار جداکننده افقی یا عمودی را نمایش میدهد.
هیچ متد دیگری به جز متدهایی که از ttk.Widget به ارث برده است، ندارد.
گزینهها¶
این ابزارک گزینهی مشخص زیر را میپذیرد:
گزینه |
توضیحات |
|---|---|
جهتدهی |
یکی از «horizontal» یا «vertical». جهت جداکننده را مشخص میکند. |
دسته تغییر اندازه (Sizegrip)¶
ابزارک ttk.Sizegrip (که با نام جعبهی رشد (grow box) نیز شناخته میشود) به کاربر امکان میدهد با فشار دادن و کشیدن دسته، اندازهی پنجرهی سطح بالای حاوی آن را تغییر دهد.
این ابزارک نه گزینههای خاصی دارد و نه متدهای خاصی، بهجز آنهایی که از ttk.Widget به ارث برده است.
نکات خاص پلتفرم¶
در macOS، پنجرههای سطح بالا بهطور پیشفرض بهصورت خودکار شامل یک دستهی تغییر اندازهی توکار هستند. افزودن یک
Sizegripبیضرر است، زیرا دستهی توکار فقط ابزارک را میپوشاند.
اشکالها¶
اگر موقعیت پنجرهی سطح بالای حاوی آن نسبت به سمت راست یا پایین صفحهنمایش مشخص شده باشد (برای مثال، ....)، ابزارک
Sizegripاندازهی پنجره را تغییر نخواهد داد.این ابزارک فقط از تغییر اندازه در جهت «جنوبشرقی» پشتیبانی میکند.
نمای درختی (Treeview)¶
ابزارک ttk.Treeview مجموعهای سلسلهمراتبی از آیتمها را نمایش میدهد. هر آیتم دارای یک برچسب متنی، یک تصویر اختیاری و یک فهرست اختیاری از مقادیر داده است. مقادیر داده در ستونهای متوالی پس از برچسب درخت نمایش داده میشوند.
ترتیب نمایش مقادیر داده را میتوان با تنظیم گزینهی displaycolumns ابزارک کنترل کرد. ابزارک درختی همچنین میتواند عنوان ستونها را نمایش دهد. میتوان به ستونها از طریق شماره یا نامهای نمادین فهرستشده در گزینهی columns ابزارک دسترسی داشت. به Column Identifiers مراجعه کنید.
هر آیتم با یک نام یکتا مشخص میشود. اگر شناسههای آیتم توسط فراخواننده ارائه نشده باشند، ابزارک آنها را تولید خواهد کرد. یک آیتم ریشهی متمایز با نام {} وجود دارد. خود آیتم ریشه نمایش داده نمیشود؛ فرزندان آن در بالاترین سطح سلسلهمراتب نمایش داده میشوند.
هر آیتم همچنین دارای فهرستی از برچسبها است که میتوان از آنها برای مرتبط کردن اتصالهای رویداد با آیتمهای منفرد و کنترل ظاهر آیتم استفاده کرد.
ابزارک Treeview از پیمایش افقی و عمودی پشتیبانی میکند، بر اساس گزینههای توصیفشده در Scrollable Widget Options و متدهای Treeview.xview() و Treeview.yview().
گزینهها¶
این ابزارک گزینههای خاص زیر را میپذیرد:
گزینه |
توضیحات |
|---|---|
columns |
فهرستی از شناسههای ستون، که تعداد ستونها و نامهای آنها را مشخص میکند. |
displaycolumns |
فهرستی از شناسههای ستون (یا شناسههای نمادین یا اندیسهای عدد صحیح) که مشخص میکند کدام ستونهای داده نمایش داده میشوند و ترتیبی که با آن ظاهر میشوند، یا رشته "#all". |
ارتفاع |
تعداد ردیفهایی را که باید قابل مشاهده باشند، مشخص میکند. توجه: عرض درخواستشده از مجموع عرض ستونها تعیین میشود. |
پرکننده (padding) |
فاصلهگذاری داخلی ابزارک را مشخص میکند. فاصلهگذاری فهرستی از حداکثر چهار مشخصهی طول است. |
selectmode |
تعیین میکند که اتصالهای کلاس توکار چگونه انتخاب را مدیریت کنند. یکی از "extended"، "browse" یا "none" است. اگر روی "extended" (پیشفرض) تنظیم شود، میتوان چند آیتم را انتخاب کرد. اگر "browse" باشد، در هر زمان فقط یک آیتم انتخاب خواهد شد. اگر "none" باشد، انتخاب تغییر نخواهد کرد. توجه داشته باشید که کد برنامه و اتصالهای برچسب (tag bindings) میتوانند انتخاب را به هر شکلی که بخواهند تنظیم کنند، صرفنظر از مقدار این گزینه. |
show |
فهرستی شامل صفر یا چند مقدار از مقادیر زیر، که مشخص میکند کدامیک از عناصر درخت نمایش داده شوند.
پیشفرض "tree headings" است، یعنی تمام المانها نمایش داده میشوند. توجه: ستون #0 همیشه به ستون درختی اشاره میکند، حتی اگر show="tree" تعیین نشده باشد. |
توجه
Tk 9.0 چندین ویژگی برای Treeview افزود. گزینهی selectmode دارای مقادیر "single" و "multiple" شد؛ گزینههای جدید ابزارک یعنی selecttype (انتخاب "item" یا "cell")، striped (ردیفهای راهراه گورخری) و titlecolumns / titleitems (ستونها یا ردیفهای ثابت هنگام پیمایش) معرفی شدند؛ گزینهی separator برای ستون افزوده شد؛ و آیتمها دارای یک گزینهی hidden شدند. Tk 9.1 گزینههای rowheight و headingheight را افزود.
گزینههای آیتم¶
میتوان گزینههای آیتم زیر را برای آیتمها در دستورات ابزارک insert و item مشخص کرد.
گزینه |
توضیحات |
|---|---|
متن |
برچسب متنی که برای آیتم نمایش داده میشود. |
تصویر |
یک تصویر Tk، که در سمت چپ برچسب نمایش داده میشود. |
مقادیر |
فهرست مقادیر مرتبط با آیتم. هر آیتم باید به همان تعداد ستونهای گزینهی ابزارک مقدار داشته باشد. اگر تعداد مقادیر کمتر از تعداد ستونها باشد، مقادیر باقیمانده خالی فرض میشوند. اگر تعداد مقادیر بیشتر از تعداد ستونها باشد، مقادیر اضافی نادیده گرفته میشوند. |
open |
مقدار |
tags |
فهرستی از برچسبهای مرتبط با این آیتم. |
گزینههای برچسب¶
میتوان گزینههای زیر را روی برچسبها مشخص کرد:
گزینه |
توضیحات |
|---|---|
foreground |
رنگ پیشزمینهی متن را مشخص میکند. |
پسزمینه |
رنگ پسزمینهی سلول یا آیتم را مشخص میکند. |
font |
قلم مورد استفاده هنگام ترسیم متن را مشخص میکند. |
تصویر |
تصویر آیتم را مشخص میکند، در صورتی که گزینهی تصویر آیتم خالی باشد. |
شناسههای ستون¶
شناسههای ستون میتوانند هر یک از شکلهای زیر را داشته باشند:
یک نام نمادین از گزینهی فهرست ستونها.
یک عدد صحیح n، که n-امین ستون داده را مشخص میکند.
رشتهای به شکل #n، که n یک عدد صحیح است و nاُمین ستون نمایش را مشخص میکند.
یادداشتها:
ممکن است مقادیر گزینههای آیتم به ترتیبی متفاوت از ترتیبی که در آن ذخیرهشدهاند نمایش داده شوند.
ستون #0 همیشه به ستون درختی اشاره میکند، حتی اگر show="tree" مشخص نشده باشد.
شمارهی ستون داده، اندیسی به فهرست مقادیر گزینههای یک آیتم است؛ شمارهی ستون نمایشی، شمارهی ستونی در درخت است که مقادیر در آن نمایش داده میشوند. برچسبهای درخت در ستون #0 نمایش داده میشوند. اگر گزینهی displaycolumns تنظیم نشده باشد، ستون دادهی n در ستون #n+1 نمایش داده میشود. باز هم، ستون #0 همیشه به ستون درخت اشاره میکند.
رویدادهای مجازی¶
ابزارک Treeview رویدادهای مجازی زیر را تولید میکند.
رویداد |
توضیحات |
|---|---|
<<TreeviewSelect>> |
هر زمان که انتخاب تغییر کند، تولید میشود. |
<<TreeviewOpen>> |
درست پیش از تنظیم آیتم فوکوس به open=True تولید میشود. |
<<TreeviewClose>> |
بلافاصله پس از تنظیم آیتم فوکوس به open=False تولید میشود. |
میتوان از متدهای Treeview.focus() و Treeview.selection() برای تعیین آیتم یا آیتمهای تحتتأثیر استفاده کرد.
ttk.Treeview¶
- class tkinter.ttk.Treeview¶
- bbox(item, column=None)¶
جعبهی محدودکنندهی آیتم مشخصشده را (نسبت به پنجرهی ابزارک treeview) در قالب (x, y, width, height) برمیگرداند.
اگر column مشخص شده باشد، جعبهی محدودکننده (bounding box) آن سلول را برمیگرداند. اگر item قابل مشاهده نباشد (یعنی نوادهی یک آیتم بسته باشد یا به بیرون از صفحه اسکرول شده باشد)، یک رشتهی خالی برمیگرداند.
این،
Misc.bbox()موروثی را میپوشاند؛ برای جعبه محدودکننده شبکه ازgrid_bbox()استفاده کنید.
- get_children(item=None)¶
یک تاپل از فرزندانِ متعلق به item برمیگرداند.
اگر item مشخص نشده باشد، فرزندان ریشه را برمیگرداند.
- set_children(item, *newchildren)¶
فرزندان item را با newchildren جایگزین میکند.
فرزندانی که در item وجود دارند اما در newchildren وجود ندارند، از درخت جدا میشوند. هیچیک از آیتمهای درون newchildren نباید نیا آیتم item باشد. توجه داشته باشید که مشخص نکردن newchildren منجر به جدا شدن فرزندان item میشود.
- column(column, option=None, **kw)¶
گزینههای ستون مشخصشده را بازخوانی یا تغییر دهید.
اگر kw داده نشده باشد، یک دیکشنری از مقادیر گزینههای ستون را برمیگرداند. اگر option مشخص شده باشد، مقدار آن option برگردانده میشود. در غیر این صورت، گزینهها را روی مقادیر متناظر تنظیم میکند.
گزینهها/مقادیر معتبر عبارتند از:
- id
نام ستون را برمیگرداند. این گزینه فقطخواندنی است.
- anchor: یکی از مقادیر استاندارد anchor در Tk.
مشخص میکند که متن این ستون چگونه باید نسبت به سلول تراز شود.
- minwidth: عرض
حداقل عرض ستون بر حسب پیکسل. هنگامی که اندازه ابزارک تغییر کند یا کاربر ستونی را بکشد، ابزارک treeview ستون را کوچکتر از مقدار مشخصشده توسط این گزینه نمیکند.
- separator:
True/False مشخص میکند که آیا جداکنندهی ستون باید در سمت راست ستون رسم شود یا خیر.
- stretch:
True/False مشخص میکند که آیا عرض ستون باید هنگام تغییر اندازهی ابزارک تنظیم شود یا خیر.
- width: عرض
عرض ستون بر حسب پیکسل.
برای پیکربندی ستون درخت، این را با column = "#0" فراخوانی کنید.
- delete(*items)¶
تمام آیتمهای مشخصشده و همهی زیرمجموعههای آنها را حذف کنید.
آیتم ریشه را نمیتوان حذف کرد.
- detach(*items)¶
پیوند تمام آیتمهای مشخصشده را از درخت جدا میکند.
آیتمها و همهی زیرمجموعههای آنها همچنان موجود هستند و میتوانند در نقطهی دیگری از درخت دوباره درج شوند، اما نمایش داده نخواهند شد.
آیتم ریشه را نمیتوان جدا کرد.
- exists(item)¶
اگر آیتم مشخصشده در درخت موجود باشد،
Trueو در غیر این صورتFalseرا برمیگرداند.
- focus(item=None)¶
اگر item مشخص شده باشد، آیتم فوکوس را روی item تنظیم میکند. در غیر این صورت، آیتم فوکوس جاری را برمیگرداند، یا اگر هیچ آیتمی وجود نداشته باشد '' را برمیگرداند.
این،
Misc.focus()ارثبریشده را میپوشاند؛ برای قرار دادن تمرکز روی خود ابزارک، ازfocus_set()استفاده کنید.
- heading(column, option=None, **kw)¶
گزینههای سرستون برای column مشخصشده را بخوانید یا تغییر دهید.
اگر kw داده نشود، یک دیکشنری از مقادیر گزینههای عنوان برمیگرداند. اگر option مشخص شده باشد، مقدار آن option برگردانده میشود. در غیر این صورت، گزینهها را روی مقادیر متناظر تنظیم میکند.
گزینهها/مقادیر معتبر عبارتند از:
- text: متن
متنی که در عنوان ستون نمایش داده میشود.
- image: imageName
تصویری را برای نمایش در سمت راست عنوان ستون مشخص میکند.
- anchor: لنگر
مشخص میکند که متن عنوان باید چگونه تراز شود. یکی از مقادیر استاندارد لنگر در Tk است.
- command: کالبک
یک کالبک که هنگام فشرده شدن برچسب عنوان فراخوانی میشود.
برای پیکربندی عنوان ستون درخت، این را با column = "#0" فراخوانی کنید.
- identify(component, x, y)¶
توضیحی از کامپوننت مشخصشده در زیر نقطهای که با x و y داده شده است برمیگرداند، یا اگر چنین کامپوننتی در آن موقعیت وجود نداشته باشد، رشته خالی را برمیگرداند.
- identify_row(y)¶
شناسهی آیتم در موقعیت y را برمیگرداند.
- identify_column(x)¶
شناسهی ستون نمایشی سلول در موقعیت x را بازمیگرداند.
ستون درخت دارای شناسه #0 است.
- identify_region(x, y)¶
یکی از موارد زیر را برمیگرداند:
ناحیه
معنی
heading
ناحیه سرآیند درخت.
separator
فاصله میان دو عنوان ستون.
tree
ناحیهی درخت.
cell
یک سلول داده.
دسترسپذیری: Tk 8.6.
- identify_element(x, y)¶
عنصر در موقعیت x، y را برمیگرداند.
دسترسپذیری: Tk 8.6.
- index(item)¶
اندیس عدد صحیح item را در فهرست فرزندان والدش برمیگرداند.
- insert(parent, index, iid=None, **kw)¶
یک آیتم جدید ایجاد میکند و شناسه آیتم تازهایجادشده را برمیگرداند.
parent شناسهی آیتم والد است، یا رشتهی خالی برای ایجاد یک آیتم سطحبالای جدید. index یک عدد صحیح است، یا مقدار "end"، و مشخص میکند که آیتم جدید در کجای فهرست فرزندان والد درج شود. اگر index کمتر یا مساوی ۰ باشد، گره جدید در ابتدا درج میشود؛ اگر index بزرگتر یا مساوی تعداد فعلی فرزندان باشد، در انتها درج میشود. اگر iid مشخص شده باشد، بهعنوان شناسهی آیتم استفاده میشود؛ iid نباید از قبل در درخت وجود داشته باشد. در غیر این صورت، یک شناسهی یکتای جدید تولید میشود.
برای دیدن فهرست گزینههای موجود، Item Options را ببینید.
- item(item, option=None, **kw)¶
گزینهها را برای آیتم مشخصشده پرسوجو یا تغییر دهید.
اگر هیچ گزینهای داده نشود، یک دیکشنری شامل گزینهها/مقادیر آیتم بازگردانده میشود. اگر option مشخص شده باشد، مقدار آن گزینه بازگردانده میشود. در غیر این صورت، گزینهها به مقادیر متناظری که توسط kw داده شدهاند تنظیم میشوند.
- move(item, parent, index)¶
item را به جایگاه index در فهرست فرزندان parent منتقل میکند.
جابهجایی یک آیتم به زیر یکی از نوادگان آن غیرمجاز است. اگر index کوچکتر یا مساوی صفر باشد، item به ابتدا منتقل میشود؛ اگر بزرگتر یا مساوی تعداد فرزندان باشد، به انتها منتقل میشود. اگر item جداشده باشد، دوباره متصل میشود.
reattach()نام مستعارmove()است.
- next(item)¶
شناسهی خواهر بعدی item را بازمیگرداند، یا اگر item آخرین فرزند والد خود باشد '' را بازمیگرداند.
- parent(item)¶
شناسهی والد item را برمیگرداند، یا اگر item در بالاترین سطح سلسلهمراتب باشد، '' را برمیگرداند.
- prev(item)¶
شناسهی همسطح قبلی item را برمیگرداند، یا اگر item اولین فرزند والد خود باشد، '' برمیگرداند.
- see(item)¶
اطمینان حاصل کنید که item قابل مشاهده است.
گزینهی open را برای تمام نیاکان item روی
Trueتنظیم میکند و در صورت لزوم، ابزارک را پیمایش میکند تا item در بخش قابلمشاهدهی درخت قرار گیرد.
- selection()¶
یک تاپل از آیتمهای انتخابشده را برمیگرداند.
تغییر یافته در نسخهی 3.8:
selection()دیگر آرگومان نمیپذیرد. برای تغییر وضعیت انتخاب، از متدهای انتخاب زیر استفاده کنید.
- selection_set(*items)¶
items به انتخاب جدید تبدیل میشود.
تغییر یافته در نسخهی 3.6: items را میتوان بهصورت آرگومانهای جداگانه ارسال کرد، نه فقط بهعنوان یک تاپل واحد.
- selection_add(*items)¶
items را به انتخاب اضافه کنید.
تغییر یافته در نسخهی 3.6: items را میتوان بهصورت آرگومانهای جداگانه ارسال کرد، نه فقط بهعنوان یک تاپل واحد.
- selection_remove(*items)¶
آیتمها را از انتخاب حذف کنید.
تغییر یافته در نسخهی 3.6: items را میتوان بهصورت آرگومانهای جداگانه ارسال کرد، نه فقط بهعنوان یک تاپل واحد.
- selection_toggle(*items)¶
وضعیت انتخاب هر یک از آیتمهای items را تغییر دهید.
تغییر یافته در نسخهی 3.6: items را میتوان بهصورت آرگومانهای جداگانه ارسال کرد، نه فقط بهعنوان یک تاپل واحد.
- set(item, column=None, value=None)¶
با ۱ آرگومان، یک دیکشنری از جفتهای ستون/مقدار برای آیتم مشخصشده برمیگرداند. با ۲ آرگومان، مقدار فعلی ستون مشخصشده را برمیگرداند. با ۳ آرگومان، مقدار ستون دادهشده در آیتم دادهشده را به مقدار مشخصشده تنظیم میکند.
- tag_bind(tagname, sequence=None, callback=None)¶
یک کالبک را برای دنبالهی رویداد دادهشده sequence به برچسب tagname مقید کنید. هنگامی که یک رویداد به یک آیتم تحویل داده میشود، کالبکهای هر یک از برچسبهای گزینهی tags آن آیتم فراخوانی میشوند.
- tag_configure(tagname, option=None, **kw)¶
گزینههای tagname مشخصشده را بخوانید یا تغییر دهید.
اگر kw داده نشود، یک دیکشنری از تنظیمات گزینهها را برای tagname برمیگرداند. اگر option مشخص شده باشد، مقدار آن option را برای tagname مشخصشده برمیگرداند. در غیر این صورت، گزینهها را روی مقادیر متناظر برای tagname دادهشده تنظیم میکند.
- tag_has(tagname, item=None)¶
اگر item مشخص شده باشد، در صورتی که item مشخصشده tagname دادهشده را داشته باشد،
Trueو در غیر این صورتFalseبرمیگرداند. در غیر این صورت، یک تاپل از تمام آیتمهایی که برچسب مشخصشده را دارند برمیگرداند.دسترسپذیری: Tk 8.6
- xview(*args)¶
موقعیت افقی نمای درختی (treeview) را بپرسید یا تغییر دهید.
- yview(*args)¶
موقعیت عمودی treeview را پرسوجو کنید یا تغییر دهید.
سبکدهی Ttk¶
به هر ابزارک در ttk یک سبک اختصاص داده میشود که مجموعهی المانهای تشکیلدهندهی ابزارک و نحوهی چیدمان آنها را بههمراه تنظیمات پویا و پیشفرض برای گزینههای المانها مشخص میکند. بهطور پیشفرض، نام سبک همان نام کلاس ابزارک است، اما ممکن است توسط گزینهی style ابزارک بازنویسی شود. اگر نام کلاس یک ابزارک را نمیدانید، از متد Misc.winfo_class (somewidget.winfo_class()) استفاده کنید.
همچنین ملاحظه نمائید
- آشنایی با موتور تم Tk
صفحه man مربوط به
ttk::introتوضیح میدهد که موتور پوسته چگونه کار میکند.- مجموعهی ابزارک Tile
مقالهی جو انگلیش در سال ۲۰۰۴ که موتور پوسته (theme engine) را معرفی میکرد (در آن زمان، افزونهی جداگانهی Tile)، به همراه نمودارهایی از اینکه عناصر و چیدمانها چگونه ظاهر یک ابزارک را تشکیل میدهند.
- class tkinter.ttk.Style¶
این کلاس برای دستکاری پایگاه دادهی سبک استفاده میشود.
- configure(style, query_opt=None, **kw)¶
مقدار پیشفرض گزینه(های) مشخصشده در style را بخوانید یا تنظیم کنید.
هر کلید در kw یک گزینه است و هر مقدار، رشتهای است که مقدار آن گزینه را مشخص میکند.
برای مثال، برای تبدیل هر دکمه پیشفرض به دکمهای تخت با کمی فاصله داخلی و رنگ پسزمینه متفاوت:
from tkinter import ttk import tkinter root = tkinter.Tk() ttk.Style().configure("TButton", padding=6, relief="flat", background="#ccc") btn = ttk.Button(text="Sample") btn.pack() root.mainloop()
- map(style, query_opt=None, **kw)¶
مقادیر پویای گزینه(های) مشخصشده در style را بازخوانی یا تنظیم میکند.
هر کلید در kw یک گزینه است و هر مقدار باید (معمولاً) یک فهرست یا تاپل حاوی مشخصههای وضعیت (statespecs) باشد که در تاپلها، فهرستها یا ترجیحی دیگر گروهبندی شدهاند. یک مشخصه وضعیت (statespec) ترکیبی از یک یا چند وضعیت و سپس یک مقدار است.
یک مثال ممکن است آن را قابلفهمتر کند:
import tkinter from tkinter import ttk root = tkinter.Tk() style = ttk.Style() style.map("C.TButton", foreground=[('pressed', 'red'), ('active', 'blue')], background=[('pressed', '!disabled', 'black'), ('active', 'white')] ) colored_btn = ttk.Button(text="Test", style="C.TButton").pack() root.mainloop()
توجه داشته باشید که ترتیب دنبالههای (حالتها، مقدار) برای یک گزینه اهمیت دارد؛ برای مثال، اگر ترتیب در گزینهی foreground به
[('active', 'blue'), ('pressed', 'red')]تغییر کند، زمانی که ابزارک در حالتهای active یا pressed باشد، نتیجه پیشزمینهای آبی خواهد بود.هنگامی که برای پرسوجوی نگاشت فراخوانی شود (بدون مشخص کردن مقادیر برای تنظیم)، یک دیکشنری برمیگرداند که هر گزینه را به فهرست مشخصات وضعیت (statespecs) مربوط به آن نگاشت میکند.
تغییر یافته در نسخهی 3.10: مقدار برگرداندهشده هنگام پرسوجو از map اصلاح شد.
- lookup(style, option, state=None, default=None)¶
مقدار تعیینشده برای option در style را برمیگرداند.
اگر state مشخص شده باشد، انتظار میرود دنبالهای از یک یا چند وضعیت باشد. اگر آرگومان default تنظیم شده باشد، بهعنوان مقدار جایگزین در صورتی استفاده میشود که هیچ مشخصهای برای گزینه یافت نشود.
برای بررسی اینکه یک Button بهطور پیشفرض از چه فونتی استفاده میکند:
from tkinter import ttk print(ttk.Style().lookup("TButton", "font"))
- layout(style, layoutspec=None)¶
چیدمان ابزارک برای style دادهشده را تعریف میکند. اگر layoutspec حذف شود، مشخصات چیدمان برای style دادهشده را برمیگرداند.
layoutspec، در صورت مشخص شدن، انتظار میرود یک فهرست یا نوع دیگری از دنباله (بهجز رشتهها) باشد، که هر آیتم باید یک تاپل باشد، آیتم اول نام چیدمان است و آیتم دوم باید دارای قالب توصیفشده در Layouts باشد.
برای درک قالب، مثال زیر را ببینید (هدف آن انجام کار مفیدی نیست):
from tkinter import ttk import tkinter root = tkinter.Tk() style = ttk.Style() style.layout("TMenubutton", [ ("Menubutton.background", None), ("Menubutton.button", {"children": [("Menubutton.focus", {"children": [("Menubutton.padding", {"children": [("Menubutton.label", {"side": "left", "expand": 1})] })] })] }), ]) mbtn = ttk.Menubutton(text='Text') mbtn.pack() root.mainloop()
- element_create(elementname, etype, *args, **kw)¶
یک عنصر جدید در پوسته فعلی ایجاد کنید، از etype دادهشده که انتظار میرود یکی از "image"، "from" یا "vsapi" باشد. مورد آخر فقط در Tk 8.6 در ویندوز در دسترس است.
اگر از "image" استفاده شود، args باید شامل نام تصویر پیشفرض و پس از آن جفتهای statespec/value باشد (این imagespec است)، و kw میتواند گزینههای زیر را داشته باشد:
- border=padding
فاصله داخلی (padding) فهرستی از حداکثر چهار عدد صحیح است که بهترتیب حاشیههای چپ، بالا، راست و پایین را مشخص میکند.
- height=height
حداقل ارتفاع برای المان را مشخص میکند. اگر کمتر از صفر باشد، ارتفاع تصویر پایه بهعنوان پیشفرض استفاده میشود.
- padding=padding
فاصلهی داخلی (padding) المان را مشخص میکند. اگر مشخص نشده باشد، بهطور پیشفرض مقدار حاشیه (border) را میگیرد.
- sticky=spec
مشخص میکند که تصویر چگونه درون قطعه نهایی (parcel) قرار میگیرد. spec شامل صفر یا چند نویسه "n"، "s"، "w" یا "e" است.
- width=width
حداقل عرض را برای المان مشخص میکند. اگر کمتر از صفر باشد، عرض تصویر پایه بهعنوان پیشفرض استفاده میشود.
مثال:
img1 = tkinter.PhotoImage(master=root, file='button.png') img1 = tkinter.PhotoImage(master=root, file='button-pressed.png') img1 = tkinter.PhotoImage(master=root, file='button-active.png') style = ttk.Style(root) style.element_create('Button.button', 'image', img1, ('pressed', img2), ('active', img3), border=(2, 4), sticky='we')
اگر "from" بهعنوان مقدار etype استفاده شود،
element_create()یک المان موجود را رونوشت میکند. انتظار میرود args شامل یک نام تم باشد که المان از آن رونوشت میشود، و بهصورت اختیاری شامل المانی باشد که از آن رونوشت میشود. اگر این المانی که از آن رونوشت میشود مشخص نشده باشد، از یک المان خالی استفاده خواهد شد. kw نادیده گرفته میشود.مثال:
style = ttk.Style(root) style.element_create('plain.background', 'from', 'default')
اگر از "vsapi" بهعنوان مقدار etype استفاده شود،
element_create()المانی جدید در پوستهی جاری ایجاد میکند که ظاهر بصری آن با استفاده از Microsoft Visual Styles API، که مسئول سبکهای پوستهای در Windows XP و Vista است، ترسیم میشود. انتظار میرود args شامل کلاس و بخش Visual Styles، همانطور که در مستندات مایکروسافت آمده است، و بهدنبال آنها دنبالهای اختیاری از تاپلهای شامل وضعیتهای ttk و مقدار وضعیت متناظر Visual Styles API باشد. kw میتواند گزینههای زیر را داشته باشد:- padding=padding
فاصلهی داخلی المان را مشخص کنید. padding فهرستی از حداکثر ۴ عدد صحیح است که بهترتیب مقادیر فاصلهی داخلی چپ، بالا، راست و پایین را مشخص میکند. اگر کمتر از ۴ عنصر مشخص شده باشد، مقدار پیشفرض پایین برابر با بالا، راست برابر با چپ، و بالا برابر با چپ خواهد بود. به عبارت دیگر، فهرستی از ۳ عدد، فاصلهی داخلی چپ، عمودی و راست را مشخص میکند؛ فهرستی از ۲ عدد، فاصلهی داخلی افقی و عمودی را مشخص میکند؛ و یک عدد، فاصلهی داخلی یکسانی را در تمام اطراف ابزارک مشخص میکند. این گزینه را نمیتوان با هیچ گزینهی دیگری ترکیب کرد.
- margins=padding
فاصله بیرونی (padding) المان را مشخص میکند. padding فهرستی از حداکثر چهار عدد صحیح است که بهترتیب مقادیر فاصله بیرونی چپ، بالا، راست و پایین را مشخص میکند. این گزینه نمیتواند با هیچ گزینه دیگری ترکیب شود.
- width=width
عرض المان را مشخص میکند. اگر این گزینه تنظیم شده باشد، از Visual Styles API برای اندازه توصیهشده یا بخش پرسوجو نخواهد شد. اگر این گزینه تنظیم شده باشد، height نیز باید تنظیم شود. گزینههای width و height را نمیتوان با گزینههای padding یا margins ترکیب کرد.
- height=height
ارتفاع المان را مشخص میکند. برای width به توضیحات مراجعه کنید.
مثال:
style = ttk.Style(root) style.element_create('pin', 'vsapi', 'EXPLORERBAR', 3, [ ('pressed', '!selected', 3), ('active', '!selected', 2), ('pressed', 'selected', 6), ('active', 'selected', 5), ('selected', 4), ('', 1)]) style.layout('Explorer.Pin', [('Explorer.Pin.pin', {'sticky': 'news'})]) pin = ttk.Checkbutton(style='Explorer.Pin') pin.pack(expand=True, fill='both')
تغییر یافته در نسخهی 3.13: پشتیبانی از کارخانهی المان "vsapi" افزوده شد.
- element_names()¶
یک تاپل از عناصر تعریفشده در پوستهی جاری برمیگرداند.
- element_options(elementname)¶
یک تاپل از گزینههای elementname را برمیگرداند.
- theme_create(themename, parent=None, settings=None)¶
یک پوسته جدید ایجاد کنید.
اگر themename از قبل وجود داشته باشد، خطا محسوب میشود. اگر parent تعیین شده باشد، پوستهی جدید سبکها، عناصر و چیدمانها را از پوستهی والد به ارث میبرد. اگر settings موجود باشند، انتظار میرود که همان نحوی را داشته باشند که برای
theme_settings()استفاده میشود.
- theme_settings(themename, settings)¶
بهطور موقت پوستهی فعلی را به themename تنظیم میکند، settings مشخصشده را اعمال میکند و سپس پوستهی قبلی را بازمیگرداند.
هر کلید در settings یک سبک است و هر مقدار ممکن است شامل کلیدهای 'configure'، 'map'، 'layout' و 'element create' باشد و انتظار میرود آنها به ترتیب همان قالب مشخصشده توسط متدهای
Style.configure()،Style.map()،Style.layout()وStyle.element_create()را داشته باشند.بهعنوان مثال، بیایید Combobox را برای پوستهی پیشفرض کمی تغییر دهیم:
from tkinter import ttk import tkinter root = tkinter.Tk() style = ttk.Style() style.theme_settings("default", { "TCombobox": { "configure": {"padding": 5}, "map": { "background": [("active", "green2"), ("!disabled", "green4")], "fieldbackground": [("!disabled", "green3")], "foreground": [("focus", "OliveDrab1"), ("!disabled", "OliveDrab2")] } } }) combo = ttk.Combobox().pack() root.mainloop()
- theme_names()¶
تاپلی از تمام پوستههای شناختهشده را برمیگرداند.
- theme_use(themename=None)¶
اگر themename داده نشود، پوستهی در حال استفاده را برمیگرداند. در غیر این صورت، پوستهی فعلی را روی themename تنظیم میکند، همهی ابزارکها را تازهسازی میکند و یک رویداد <<ThemeChanged>> منتشر میکند.
چیدمانها¶
یک چیدمان میتواند صرفاً None باشد، اگر گزینهای نمیپذیرد، یا یک دیکشنری از گزینهها باشد که نحوهی چیدمان المان را مشخص میکند. سازوکار چیدمان از یک نسخهی سادهشدهی مدیر هندسی pack استفاده میکند: با فرض یک حفرهی اولیه، به هر المان یک قطعه تخصیص داده میشود.
گزینهها/مقادیر معتبر عبارتند از:
- سمت: کدام سمت
مشخص میکند که المان در کدام سمت حفره قرار گیرد؛ یکی از top، right، bottom یا left. اگر حذف شود، المان کل حفره را اشغال میکند.
- sticky: nswe
مشخص میکند که المان درون قطعهی تخصیصیافتهی خود کجا قرار میگیرد.
- unit: ۰ یا ۱
اگر روی ۱ تنظیم شود، باعث میشود المان و همه زیرمجموعههای آن برای مقاصد
Widget.identify()و متدهای مشابه، بهعنوان یک المان واحد در نظر گرفته شوند. این گزینه برای مواردی مانند انگشتیهای نوار پیمایش (scrollbar thumbs) دارای دسته استفاده میشود.- children: [sublayout... ]
فهرستی از المانها را برای قرار دادن درون المان مشخص میکند. هر المان یک تاپل (یا نوع دنبالهای دیگر) است که نخستین آیتم آن نام چیدمان است و دومی یک Layout است.
ابزارکهای اضافی¶
ابزارکهای پوستهدار زیر، مجموعه ابزارکهای tkinter.ttk را کامل میکنند. هر یک همتای پوستهدار ابزارک کلاسیک همنام در tkinter است و متدهای مشترک Widget را به ارث میبرد.
- class tkinter.ttk.Button(master=None, **kw)¶
ابزارک
Buttonدر Ttk، یک برچسب متنی و/یا تصویر را نمایش میدهد و هنگام فشرده شدن، یک فرمان را ارزیابی میکند. این ابزارک، همتای پوستهدارtkinter.Buttonاست و متدهای رایج ابزارکها را ازWidgetبه ارث میبرد.- invoke()¶
فرمان مرتبط با دکمه را فراخوانی میکند و نتیجهی آن را برمیگرداند.
- class tkinter.ttk.Checkbutton(master=None, **kw)¶
ابزارک
Checkbuttonدر Ttk، برای کنترل یک متغیر بولی استفاده میشود که بین حالت روشن و خاموش تغییر وضعیت میدهد. این ابزارک، همتای پوستهدارtkinter.Checkbuttonاست و متدهای رایج ابزارکها را ازWidgetبه ارث میبرد.- invoke()¶
وضعیت دکمه را بین حالتهای انتخابشده و انتخابنشده تغییر میدهد، فرمان مرتبط با دکمه را فراخوانی میکند و نتیجهی آن را بازمیگرداند.
- class tkinter.ttk.Entry(master=None, widget=None, **kw)¶
ابزارک
Entryدر Ttk، یک رشته متنی یکخطی را نمایش میدهد و به کاربر امکان ویرایش آن را میدهد. این ابزارک، همتای پوستهدارtkinter.Entryاست و متدهای رایج ابزارک را ازWidgetو همچنین متدهای ویرایشی را ازtkinter.Entryبه ارث میبرد.- bbox(index)¶
یک تاپل
(x, y, width, height)برمیگرداند که جعبه محدودکننده (bounding box) نویسه در اندیس دادهشده را میدهد.این،
Misc.bbox()موروثی را میپوشاند؛ برای جعبه محدودکننده شبکه ازgrid_bbox()استفاده کنید.
- identify(x, y)¶
نام عنصری که در زیر نقطه مشخصشده با x و y قرار دارد را برمیگرداند، یا رشته خالی اگر هیچ عنصری در آن موقعیت وجود نداشته باشد.
- validate()¶
اعتبارسنجی ورودی را اجباری میکند و در صورت موفقیتآمیز بودن اعتبارسنجی،
Trueو در غیر این صورتFalseبرمیگرداند.
- class tkinter.ttk.Frame(master=None, **kw)¶
ابزارک
Frameدر Ttk، یک ظرف است که برای گروهبندی و چیدمان سایر ابزارکها استفاده میشود. این ابزارک، همتای پوستهدارtkinter.Frameاست و متدهای مشترک ابزارکها را ازWidgetبه ارث میبرد.
- class tkinter.ttk.Label(master=None, **kw)¶
ابزارک
Labelدر Ttk، یک برچسب متنی و/یا تصویر را نمایش میدهد. این ابزارک همتای تمدارtkinter.Labelاست و متدهای رایج ابزارکها را ازWidgetبه ارث میبرد.
- class tkinter.ttk.Labelframe(master=None, **kw)¶
ابزارک Ttk
Labelframe، ظرفی است که دور محتوای خود یک کادر و یک برچسب عنوان ترسیم میکند. این ابزارک همتای تمدارِtkinter.LabelFrameاست و متدهای رایج ابزارک را ازWidgetبه ارث میبرد.
- class tkinter.ttk.Menubutton(master=None, **kw)¶
ابزارک
Menubuttonدر Ttk، یک برچسب متنی و/یا تصویر را نمایش میدهد و هنگامی که فشرده میشود، یک منو را بهصورت بازشو ظاهر میکند. این ابزارک، همتای پوستهدارtkinter.Menubuttonاست و متدهای رایج ابزارک را ازWidgetبه ارث میبرد.
- class tkinter.ttk.OptionMenu(master, variable, default=None, *values, **kwargs)¶
ابزارک
OptionMenuدر Ttk، یکMenubuttonاست که منویی از گزینههای انحصاری متقابل را بهصورت بازشو نمایش میدهد. variable متغیری است که مقدار انتخابشدهی فعلی را پیگیری میکند، default مقداری است که در ابتدا تنظیم میشود، و values آیتمهایی هستند که در منو نمایش داده میشوند. میتوان یک آرگومان کلیدواژهای command را برای مشخص کردن یک شیء فراخوانیپذیر ارائه کرد که هر زمان انتخاب تغییر کند، با مقدار انتخابشده فراخوانی میشود؛ آرگومان کلیدواژهای style سبک مورد استفاده در menubutton زیربنایی را تنظیم میکند؛ آرگومان کلیدواژهای direction محل نمایش منو نسبت به menubutton را تنظیم میکند (یکی از'above'،'below'(پیشفرض)،'left'،'right'یا'flush')؛ و آرگومان کلیدواژهای name نام ابزارک Tk را تنظیم میکند.آیتمهای منو را با values جایگزین کنید. اگر default داده شده باشد، آن را بهعنوان مقدار فعلی variable نیز تنظیم کنید.
- destroy()¶
این ابزارک و منوی مرتبط با آن را نابود میکند.
تغییر یافته در نسخهی 3.14: پشتیبانی از آرگومان کلیدواژهای name افزوده شد.
- class tkinter.ttk.Panedwindow(master=None, **kw)¶
ابزارک Ttk
Panedwindow، تعدادی زیرپنجره را نمایش میدهد که بهصورت عمودی یا افقی روی هم چیده شدهاند. کاربر میتواند اندازههای نسبی زیرپنجرهها را با کشیدن نوار جداکننده (sash) بین پنجرهها تنظیم کند. این ابزارک، همتای تمدارtkinter.PanedWindowاست و متدهای رایج ابزارک را ازWidgetو همچنین متدهایadd()وpanes()را ازtkinter.PanedWindowبه ارث میبرد.- insert(pos, child, **kw)¶
یک بخش حاوی child را در موقعیت pos درج کنید. pos میتواند رشتهی
'end'، یک اندیس عدد صحیح، یا نام یک زیرپنجرهی مدیریتشده باشد. اگر child از قبل توسط پنجرهی چندقاب (paned window) مدیریت شده باشد، آن را به موقعیت مشخصشده منتقل کنید. هر آرگومان کلیدواژهای، گزینههای بخش را تنظیم میکند.
- forget(child)¶
حذف child، که میتواند یک اندیس عدد صحیح یا نام یک زیرپنجرهی مدیریتشده باشد، از بخشها.
این متد،
forget()موروثیِ مدیر چیدمان را میپوشاند؛ برای حذف خود ابزارک از مدیر آن، ازpack_forget()،grid_forget()یاplace_forget()استفاده کنید.
- pane(pane, option=None, **kw)¶
گزینههای pane مشخصشده را پرسوجو میکند یا تغییر میدهد؛ pane یا یک اندیس عدد صحیحی است یا نام یک زیرپنجرهی مدیریتشده. اگر هیچ آرگومانی داده نشود، یک دیکشنری از مقادیر گزینههای pane برمیگرداند. اگر option مشخص شده باشد، مقدار آن گزینه را برمیگرداند. در غیر این صورت، گزینههای دادهشده بهصورت آرگومانهای کلیدواژهای را روی مقادیر متناظرشان تنظیم میکند.
- sashpos(index, newpos=None)¶
اگر newpos مشخص شده باشد، موقعیت نوار جداکننده با شمارهی index را تنظیم میکند و موقعیت جدید آن را برمیگرداند. این کار ممکن است موقعیت نوارهای جداکننده مجاور را تنظیم کند تا اطمینان حاصل شود که موقعیتها بهصورت یکنواخت افزایشی هستند؛ همچنین موقعیتها محدود شدهاند که بین ۰ و اندازهی کل ابزارک باشند. اگر newpos حذف شده باشد، موقعیت فعلی نوار جداکننده را برمیگرداند.
- class tkinter.ttk.Radiobutton(master=None, **kw)¶
ابزارک
Radiobuttonدر Ttk، بهعنوان بخشی از یک گروه برای کنترل یک متغیر مشترک واحد با انتخاب یکی از چند مقدار متقابلاً انحصاری استفاده میشود. این ابزارک همتای دارای تمِtkinter.Radiobuttonاست و متدهای رایج ابزارک را ازWidgetبه ارث میبرد.- invoke()¶
متغیر گزینه را روی مقدار دکمه تنظیم کنید، دکمه را انتخاب کنید، فرمان مرتبط با دکمه را فراخوانی کنید و نتیجهی آن را برگردانید.
- class tkinter.ttk.Scale(master=None, **kw)¶
ابزارک
Scaleدر Ttk، لغزندهای را نمایش میدهد که به کاربر امکان میدهد با حرکت لغزنده در طول یک شیار، یک مقدار عددی از یک محدوده را انتخاب کند. این ابزارک، همتای پوستهدارtkinter.Scaleاست و متدهای رایج ابزارک را ازWidgetبه ارث میبرد.- configure(cnf=None, **kw)¶
تغییر یا پرسوجوی گزینههای ابزارک، مانند
Widget.configure. علاوه بر این، این متد مقادیرfromوtoرا محدود میکند تا مقدار فعلی در محدودهی تعریفشده توسط آنها باقی بماند.تغییر یافته در نسخهی 3.9: اکنون مقدار پیکربندی را برمیگرداند، مانند
Widget.configure.
- get(x=None, y=None)¶
مقدار فعلی مقیاس را برمیگرداند. اگر x و y داده شده باشند، در عوض مقدار متناظر با مختصات پیکسلی x، y را برمیگرداند.
- class tkinter.ttk.Scrollbar(master=None, **kw)¶
ابزارک
Scrollbarدر Ttk، دریچه دید (viewport) یک ابزارک پیمایشپذیر مرتبط مانندTreeview،Entryیاtkinter.Textرا کنترل میکند. این ابزارک، همتای پوستهدارtkinter.Scrollbarاست و متدهای مشترک ابزارکها را ازWidgetو همچنین متدهایset()وget()را ازtkinter.Scrollbarبه ارث میبرد.
- class tkinter.ttk.Separator(master=None, **kw)¶
ابزارک
Separatorدر Ttk، یک خط جداکننده افقی یا عمودی را نمایش میدهد. این ابزارک معادل مستقیمی درtkinterندارد و متدهای رایج ابزارکها را ازWidgetبه ارث میبرد.
- class tkinter.ttk.Sizegrip(master=None, **kw)¶
ابزارک
Sizegripدر Ttk، دستهای را نمایش میدهد که به کاربر اجازه میدهد با فشار دادن و کشیدن آن دسته، اندازهی پنجرهی سطح بالای حاوی آن را تغییر دهد؛ این دسته معمولاً در گوشهی پایین سمت راست قرار میگیرد. این ابزارک معادل مستقیمی درtkinterندارد و متدهای رایج ابزارکها را ازWidgetبه ارث میبرد.
- class tkinter.ttk.LabeledScale(master=None, variable=None, from_=0, to=10, **kw)¶
یک
Frameشامل یکScaleو یکLabelاست که مقدار فعلی مقیاس را نشان میدهد. variable همانIntVarاست که مقیاس آن را پیگیری میکند (اگر داده نشود، یکی ایجاد میشود)، و from_ و to بازهی مقیاس را مشخص میکنند.- destroy()¶
این ابزارک را نابود میکند و کالبک ردگیری (trace callback) ثبتشده روی متغیر مرتبط را حذف میکند.
- class tkinter.ttk.LabelFrame(master=None, **kw)¶
نام مستعار
Labelframe، که برای سازگاری نامگذاری باtkinter.LabelFrameنگه داشته شده است.
- class tkinter.ttk.PanedWindow(master=None, **kw)¶
نام مستعاری از
Panedwindow، که برای سازگاری نامگذاری باtkinter.PanedWindowحفظ شده است.