🎯 الهدف من الدرس أن تتعلم كيفية:
- استخدام عنصر
ttk.Treeviewلعرض بيانات منظمة في شكل جدول. - إضافة أعمدة وصفوف.
- التفاعل مع بيانات الجدول مثل التحديد والقراءة.
✅ ما هو ttk.Treeview؟
هو عنصر واجهة رسومية يسمح بعرض البيانات في شكل هيكل شجري أو جدول (مثل الجداول في Excel).
✅ مثال عملي: عرض جدول موظفين
import tkinter as tk
from tkinter import ttk
# إنشاء النافذة
window = tk.Tk()
window.title("جدول الموظفين")
window.geometry("500x300")
# إنشاء عنصر Treeview
tree = ttk.Treeview(window, columns=("name", "position", "salary"), show="headings")
# إعداد رؤوس الأعمدة
tree.heading("name", text="الاسم")
tree.heading("position", text="المنصب")
tree.heading("salary", text="الراتب")
# تحديد حجم الأعمدة
tree.column("name", width=150)
tree.column("position", width=150)
tree.column("salary", width=100)
# إدراج بيانات للجدول
tree.insert("", tk.END, values=("أحمد علي", "محاسب", "5000"))
tree.insert("", tk.END, values=("منى حسن", "مبرمجة", "6500"))
tree.insert("", tk.END, values=("سامي يوسف", "مدير", "8000"))
# عرض الجدول
tree.pack(pady=20)
window.mainloop()
🧠 شرح الكود:
| السطر | الوظيفة |
|---|---|
ttk.Treeview(..., columns=...) |
إنشاء الجدول وتحديد الأعمدة. |
heading(...) |
تعيين اسم كل عمود في الجدول. |
insert(...) |
إضافة صف جديد للجدول. |
show="headings" |
إخفاء العمود الأساسي (العنصر الجذري). |
📌 ملاحظات إضافية:
- يمكنك ربط الجدول بقاعدة بيانات لاحقًا.
- يمكن جعل الأعمدة قابلة للفرز.
- يدعم التعامل مع الأحداث مثل النقر على صف معين.
✅ التمرين: عرض جدول طلاب يحتوي على الاسم، المرحلة، والمعدل
🎯 المطلوب:
أن تنشئ واجهة تحتوي على جدول فيه بيانات 5 طلاب، كل طالب له:
- الاسم
- المرحلة الدراسية
- المعدل التراكمي
✅ الحل الكامل:
import tkinter as tk
from tkinter import ttk
# إنشاء النافذة
window = tk.Tk()
window.title("جدول الطلاب")
window.geometry("550x300")
# إنشاء عنصر Treeview
tree = ttk.Treeview(window, columns=("name", "grade", "gpa"), show="headings")
# تعيين رؤوس الأعمدة
tree.heading("name", text="الاسم")
tree.heading("grade", text="المرحلة")
tree.heading("gpa", text="المعدل")
# تعيين عرض الأعمدة
tree.column("name", width=180)
tree.column("grade", width=120)
tree.column("gpa", width=100)
# إدخال بيانات الطلاب
students = [
("أحمد محمد", "الثانية", "3.5"),
("ليلى علي", "الأولى", "3.8"),
("سعيد يوسف", "الثالثة", "3.2"),
("نجلاء عمرو", "الثانية", "3.9"),
("كريم فهد", "الأولى", "3.6")
]
for student in students:
tree.insert("", tk.END, values=student)
# عرض الجدول
tree.pack(pady=20)
window.mainloop()
✅ الناتج عند التنفيذ:
واجهة تحتوي على جدول منسق بثلاثة أعمدة:
- الاسم
- المرحلة
- المعدل
مع 5 صفوف تمثل طلابًا مختلفين.
🧠 تطوير إضافي لاحقًا (اختياري):
- جعل المستخدم يضيف صفوف جديدة عبر إدخال البيانات.
- التفاعل مع الصف المحدد (عرض رسالة بمعلومات الطالب عند النقر).
- حفظ البيانات في ملف CSV أو قاعدة بيانات.

