الهدف من هذا الدرس هو تعلم كيفية استخدام عنصر Listbox في Tkinter لعرض قائمة عناصر يمكن اختيار واحد أو أكثر منها.
🧱 ما هو Listbox؟
هو عنصر واجهة رسومية يُستخدم لـ:
- عرض قائمة من النصوص أو القيم.
- يمكن للمستخدم اختيار عنصر واحد أو عدة عناصر منها.
📌 الصيغة الأساسية:
listbox = tk.Listbox(root)
listbox.insert(index, "نص العنصر")
➕ أهم الخصائص:
| الخاصية | الاستخدام |
|---|---|
insert |
لإضافة عنصر إلى القائمة |
get(index) |
جلب عنصر معين من القائمة |
curselection() |
جلب الفهرس (أو الفهارس) المختارة |
selectmode |
تحديد طريقة التحديد (واحد أو متعدد) |
✅ مثال عملي:
import tkinter as tk
def عرض_الاختيار():
المختار = القائمة.curselection()
if المختار:
العنصر = القائمة.get(المختار[0])
label.config(text=f"اخترت: {العنصر}")
else:
label.config(text="لم يتم اختيار شيء")
# إنشاء النافذة
window = tk.Tk()
window.title("مثال على Listbox")
window.geometry("300x250")
# إنشاء القائمة
القائمة = tk.Listbox(window)
العناصر = ["تفاح", "موز", "برتقال", "عنب", "مانجو"]
for عنصر in العناصر:
القائمة.insert(tk.END, عنصر)
القائمة.pack(pady=10)
# زر لعرض الاختيار
tk.Button(window, text="عرض الاختيار", command=عرض_الاختيار).pack()
# لعرض النتيجة
label = tk.Label(window, text="اختر فاكهة")
label.pack(pady=10)
window.mainloop()
📌 أنواع التحديد:
selectmode |
الوصف |
|---|---|
"browse" |
اختيار عنصر واحد (افتراضي) |
"multiple" |
تحديد أكثر من عنصر |
"extended" |
تحديد مجموعة باستخدام shift |
✅ التمرين: "اختيار الهواية المفضلة"
🎯 المطلوب:
- أنشئ نافذة تعرض قائمة بـ 5 هوايات باستخدام
Listbox. - اجعل المستخدم قادرًا على اختيار هواية واحدة فقط.
- أضف زرًا عند الضغط عليه يتم عرض اسم الهواية المختارة في
Label. - إذا لم يتم اختيار شيء، يظهر تنبيه "لم يتم اختيار أي هواية."
🧾 الحل الكامل:
import tkinter as tk
def عرض_الهواية():
التحديد = هوايات.curselection()
if التحديد:
الهواية = هوايات.get(التحديد[0])
النتيجة.config(text=f"✅ هوايتك المفضلة: {الهواية}")
else:
النتيجة.config(text="❌ لم يتم اختيار أي هواية")
# نافذة التطبيق
window = tk.Tk()
window.title("اختيار الهواية")
window.geometry("300x250")
# قائمة الهوايات
هوايات = tk.Listbox(window, selectmode="browse")
قائمة_الهوايات = ["القراءة", "السباحة", "الرسم", "البرمجة", "التصوير"]
for عنصر in قائمة_الهوايات:
هوايات.insert(tk.END, عنصر)
هوايات.pack(pady=10)
# زر الاختيار
tk.Button(window, text="عرض الهواية المختارة", command=عرض_الهواية).pack(pady=5)
# لعرض النتيجة
النتيجة = tk.Label(window, text="اختر هوايتك من القائمة")
النتيجة.pack(pady=10)
# تشغيل التطبيق
window.mainloop()
💡 ما تعلمته من التمرين:
| العنصر | الاستخدام |
|---|---|
Listbox |
عرض قائمة خيارات |
insert() |
إدخال عناصر إلى القائمة |
curselection() |
الحصول على الفهرس/الفهارس المحددة |
get(index) |
الحصول على اسم العنصر المحدد في القائمة |
Label |
عرض النتيجة أو التنبيه |

