🧱 الدرس الثامن من سلسلة Tkinter: التعامل مع عناصر القائمة (Listbox)

تعلم كيفية استخدام عنصر Listbox لعرض قائمة من العناصر التي يمكن للمستخدم اختيار واحد أو أكثر منها.

🧱 الدرس الثامن من سلسلة Tkinter: التعامل مع عناصر القائمة (Listbox)

🧩 ما هو Listbox؟

هو عنصر رسومي في Tkinter يسمح بعرض قائمة من العناصر، ويمكن للمستخدم اختيار عنصر واحد أو عدة عناصر منها حسب الإعدادات.


إنشاء Listbox:

import tkinter as tk

root = tk.Tk()
root.title("مثال على Listbox")

# إنشاء Listbox
listbox = tk.Listbox(root, height=5)
listbox.pack(pady=10)

# إضافة عناصر إلى القائمة
العناصر = ["Python", "JavaScript", "Java", "C++", "Go"]
for عنصر in العناصر:
    listbox.insert(tk.END, عنصر)

root.mainloop()ع 

🛠️ أنواع الاختيار في Listbox:

يمكنك تحديد نوع الاختيار:

النوع الوصف
SINGLE اختيار عنصر واحد فقط
MULTIPLE اختيار عدة عناصر (بزر Ctrl)
EXTENDED اختيار مجموعة متتابعة
BROWSE شبيه بـ SINGLE (الوضع الافتراضي)

مثال:

listbox = tk.Listbox(root, selectmode=tk.MULTIPLE)

📥 الحصول على العناصر المحددة:

selected_indices = listbox.curselection()
for index in selected_indices:
    print("العنصر:", listbox.get(index))

🧪 مثال كامل:

import tkinter as tk

def عرض_الاختيارات():
    المختارة = listbox.curselection()
    النتائج = [listbox.get(i) for i in المختارة]
    result_label.config(text="تم اختيار: " + ", ".join(النتائج))

root = tk.Tk()
root.title("اختيار لغات برمجة")
root.geometry("300x300")

tk.Label(root, text="اختر لغات البرمجة التي تعرفها:").pack(pady=5)

listbox = tk.Listbox(root, selectmode=tk.MULTIPLE)
لغات = ["Python", "JavaScript", "Java", "C#", "C++", "Go"]
for لغة in لغات:
    listbox.insert(tk.END, لغة)
listbox.pack()

tk.Button(root, text="عرض الاختيارات", command=عرض_الاختيارات).pack(pady=10)

result_label = tk.Label(root, text="")
result_label.pack()

root.mainloop()

📌 ملاحظات:

  • يمكنك استخدام listbox.delete() لحذف عنصر.
  • استخدم listbox.size() لمعرفة عدد العناصر.
  • يمكنك تمرير Scrollbar لسهولة التصفح في القوائم الطويلة.


🧪 التمرين التطبيقي:

🔹 المطلوب:

أنشئ واجهة رسومية تحتوي على:

  1. عنصر Listbox يحتوي على قائمة من الفواكه.
  2. زر عند الضغط عليه يعرض اسم الفاكهة التي قام المستخدم باختيارها.
  3. حقل Label لعرض النتيجة.

الحل الكامل:

import tkinter as tk

def عرض_الفاكهة_المختارة():
    # الحصول على العنصر المختار
    المختارة = listbox.curselection()
    if المختارة:
        الفاكهة = listbox.get(المختارة[0])
        النتيجة.config(text=f"أنت اخترت: {الفاكهة}")
    else:
        النتيجة.config(text="لم تقم باختيار أي فاكهة!")

# نافذة التطبيق
root = tk.Tk()
root.title("اختيار الفاكهة")
root.geometry("300x250")

# عنوان
tk.Label(root, text="اختر فاكهة من القائمة:").pack(pady=10)

# قائمة الفواكه
listbox = tk.Listbox(root)
فواكه = ["تفاح", "موز", "برتقال", "عنب", "كيوي", "رمان"]
for فاكهة in فواكه:
    listbox.insert(tk.END, فاكهة)
listbox.pack()

# زر عرض الاختيار
tk.Button(root, text="اعرض الفاكهة المختارة", command=عرض_الفاكهة_المختارة).pack(pady=10)

# حقل النتيجة
النتيجة = tk.Label(root, text="", fg="green")
النتيجة.pack()

root.mainloop()

ما ستتعلمه من التمرين:

  • كيفية التعامل مع Listbox.
  • كيفية جلب العنصر المحدد.
  • كيفية عرض النتيجة بطريقة تفاعلية.

إرسال تعليق

0 تعليقات