آموزش پایتون - لیستباکس
ویجت (widget) لیستباکس (Listbox) برای نمایش لیستی از موارد استفاده میشود که کاربر میتواند چندین مورد را انتخاب کند.
نحو (Syntax)
ساختار سادهای برای ایجاد این ویجت وجود دارد :
w = Listbox ( master, option, ... )
پارامترها (Parameters)
-
master (اصلی) − این نمایانگر پنجره والد (پنجره اصلی) است.
-
options (گزینهها) − اینجا لیستی از معمولترین گزینههای استفاده شده برای این ویجت وجود دارد. این گزینهها میتوانند به صورت جفتهای کلید باشند و مقدار (key-value pairs) با استفاده از کاما جدا میشود.
ردیف | گزینه و توضیحات |
---|---|
1 |
bg (پسزمینه) رنگ عادی پسزمینه که پشت برچسب و نشانگر نمایش داده میشود. |
2 |
bd (حاشیه) اندازه حاشیه دور نشانگر. پیشفرض ۲ پیکسل است. |
3 |
cursor (نشانگر) نشانگری که ظاهر میشود هنگامی که موس بر روی لیستباکس است. |
4 |
font (قلم) قلم مورد استفاده برای متن در لیستباکس. |
5 |
fg (رنگ متن) رنگ متن استفاده شده در لیستباکس. |
6 |
height (ارتفاع) تعداد خطوط (نه پیکسلها!) نشانداده شده در لیستباکس. پیشفرض ۱۰ است. |
7 |
highlightcolor (رنگ برجسته) رنگ نمایش داده شده در برجسته بودن هنگامی که ویجت فوکوس دارد. |
8 |
highlightthickness (ضخامت برجستگی) ضخامت برجستگی فوکوس. (توجه: برجستگی به معنی حاشیه بودن بر روی یک آیتم یا ویجت است) |
9 |
relief انتخاب افکتهای سایهی سه بعدی. پیشفرض SUNKEN است. |
10 |
selectbackground (رنگ انتخاب) رنگ پسزمینه برای نمایش متن انتخابشده. |
11 |
selectmode (حالت انتخاب) تعیین میکند چند مورد میتواند انتخاب شود و نحوهی تأثیر کشیدن ماوس بر روی انتخاب −
|
12 |
width (عرض) عرض ویجت به صورت تعداد کاراکترها. پیشفرض ۲۰ است. |
13 |
xscrollcommand (دستور ماوس افقی) اگر میخواهید به کاربر اجازه دهید لیستباکس را به صورت افقی اسکرول کند، میتوانید ویجت لیستباکس خود را به یک نوار افقی ارتباط دهید. |
14 |
yscrollcommand (دستور ماوس عمودی) اگر میخواهید به کاربر اجازه دهید لیستباکس را به صورت عمودی اسکرول کند، میتوانید ویجت لیستباکس خود را به یک نوار عمودی ارتباط دهید. |
متدها (Methods)
متدهای موجود بر روی اشیاء لیستباکس عبارتند از −
ردیف | گزینه و توضیحات |
---|---|
1 |
activate خط مشخصشده توسط اندیس داده شده را انتخاب میکند. |
2 |
curselection() تاپلی شامل شمارههای خطوط عناصر انتخابشده را با شمارش از صفر برمیگرداند. اگر چیزی انتخاب نشده باشد، یک تاپل خالی برگردانده میشود. |
3 |
delete ( ابتدا، انتها=None ) خطوطی که اندیسهایشان در محدوده [ابتدا، انتها] هستند را حذف میکند. اگر ارگومان دوم حذف شود، تنها یک خط با اندیس ابتدا حذف میشود. |
4 |
get ( ابتدا، انتها=None ) تاپلی شامل متن خطوط با اندیسهای از ابتدا تا انتها (شامل انتها) را برمیگرداند. اگر ارگومان دوم حذف شود، متن خطی که به اندیس ابتدا نزدیکتر است برگردانده میشود. |
5 |
index ( اندیس ) اگر امکان دارد، بخش قابلمشاهدهٔ لیستباکس را به گونهای تنظیم میکند که خطی که اندیس i در آن قرار دارد در بالای ویجت قرار گیرد. |
6 |
insert ( اندیس، *عناصر ) یک یا چند خط جدید را قبل از خط مشخصشده توسط اندیس درون لیستباکس قرار میدهد. اگر میخواهید خطهای جدید را در انتهای لیستباکس اضافه کنید، از END به عنوان اولین ارگومان استفاده کنید. |
7 |
nearest ( y ) اندیس خط قابلمشاهدهای که بهطور نزدیکترین به مختصات y نسبت به ویجت لیستباکس است را برمیگرداند. |
8 |
see ( اندیس ) موقعیت لیستباکس را به گونهای تنظیم میکند که خط مشاره شده توسط اندیس قابلمشاهده باشد. |
9 |
size() تعداد خطوط موجود در لیستباکس را برمیگرداند. |
10 |
xview() برای امکان اسکرول افقی لیستباکس، گزینهٔ دستور نوار افقی مرتبط را به این متد تنظیم کنید. |
11 |
xview_moveto ( کسر ) لیستباکس را به گونهای اسکرول میکند که کسر چپترین قسمت عرض خط بلندترین خط آن خارج از چپ لیستباکس قرار گیرد. کسر در بازه [0،1] است. |
12 |
xview_scroll ( تعداد، چیست ) لیستباکس را به صورت افقی اسکرول میکند. برای آرگومان چیست، از UNITS برای اسکرول به واحدها و یا PAGES برای اسکرول به صفحات (عرض لیستباکس) استفاده کنید. آرگومان تعداد تعیینکننده تعداد اسکرولها است. |
13 |
yview() برای امکان اسکرول عمودی لیستباکس، گزینهٔ دستور نوار عمودی مرتبط را به این متد تنظیم کنید. |
14 |
yview_moveto ( کسر ) لیستباکس را به گونهای اسکرول میکند که کسر بالاترین قسمت عرض خط بلندترین خط آن خارج از بالای لیستباکس قرار گیرد. کسر در بازه [0،1] است. |
15 |
yview_scroll ( تعداد، چیست ) لیستباکس را به صورت عمودی اسکرول میکند. برای آرگومان چیست، از UNITS برای اسکرول به خطوط و یا PAGES برای اسکرول به صفحات (ارتفاع لیستباکس) استفاده کنید. آرگومان تعداد تعیینکننده تعداد اسکرولها است. |
مثال (Example)
برای آزمایش مثال زیر را خودتان امتحان کنید −
from tkinter import *
top = Tk()
Lb1 = Listbox(top)
Lb1.insert(1, "Python")
Lb1.insert(2, "Perl")
Lb1.insert(3, "C")
Lb1.insert(4, "PHP")
Lb1.insert(5, "JSP")
Lb1.insert(6, "Ruby")
Lb1.pack()
top.mainloop()
هنگامی که کد بالا اجرا میشود، نتیجه زیر را تولید میکند −