🎯 الهدف من الدرس: أن تتعلم كيف:
- تُنشئ حقول إدخال (Entry) للمستخدم.
- تضيف البيانات التي يُدخلها المستخدم مباشرة إلى جدول
Treeview. - تربط بين الأزرار والأوامر في التطبيق.
✅ مثال عملي: إدخال معلومات طالب وإضافتها إلى الجدول
import tkinter as tk
from tkinter import ttk
# إنشاء النافذة
window = tk.Tk()
window.title("إضافة طلاب")
window.geometry("600x400")
# ========== إنشاء عناصر الجدول ==========
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=200)
tree.column("grade", width=120)
tree.column("gpa", width=100)
tree.pack(pady=10)
# ========== عناصر الإدخال ==========
frame = tk.Frame(window)
frame.pack(pady=10)
tk.Label(frame, text="الاسم:").grid(row=0, column=0, padx=5)
entry_name = tk.Entry(frame)
entry_name.grid(row=0, column=1)
tk.Label(frame, text="المرحلة:").grid(row=0, column=2, padx=5)
entry_grade = tk.Entry(frame)
entry_grade.grid(row=0, column=3)
tk.Label(frame, text="المعدل:").grid(row=0, column=4, padx=5)
entry_gpa = tk.Entry(frame)
entry_gpa.grid(row=0, column=5)
# ========== زر الإضافة ==========
def add_student():
name = entry_name.get()
grade = entry_grade.get()
gpa = entry_gpa.get()
if name and grade and gpa:
tree.insert("", tk.END, values=(name, grade, gpa))
entry_name.delete(0, tk.END)
entry_grade.delete(0, tk.END)
entry_gpa.delete(0, tk.END)
btn_add = tk.Button(window, text="إضافة الطالب", command=add_student)
btn_add.pack(pady=10)
window.mainloop()
🧠 شرح مختصر:
| الجزء | الوظيفة |
|---|---|
Entry() |
إدخال نصوص (الاسم، المرحلة، المعدل). |
command=add_student |
عند الضغط على الزر، تُنفذ دالة تضيف البيانات. |
tree.insert() |
تُدرج الصف الجديد في الجدول. |
✅ النتيجة:
واجهة تحتوي على:
- جدول فارغ في البداية.
- إدخال الاسم، المرحلة، والمعدل.
- زر "إضافة الطالب".
- عند الضغط على الزر، تتم إضافة الصف الجديد إلى الجدول مباشرة.
✅ التمرين: إنشاء واجهة لإضافة منتجات إلى جدول
🎯 المطلوب:
صمّم تطبيقًا بواجهة تحتوي على:
- جدول يعرض المنتجات (اسم المنتج - السعر - الكمية).
- ثلاث خانات إدخال للمستخدم لإضافة منتج جديد.
- زر لإضافة المنتج إلى الجدول.
✅ الحل الكامل:
import tkinter as tk
from tkinter import ttk
# إنشاء النافذة
window = tk.Tk()
window.title("إدارة المنتجات")
window.geometry("600x400")
# ========== إنشاء جدول Treeview ==========
tree = ttk.Treeview(window, columns=("product", "price", "quantity"), show="headings")
tree.heading("product", text="اسم المنتج")
tree.heading("price", text="السعر")
tree.heading("quantity", text="الكمية")
tree.column("product", width=200)
tree.column("price", width=100)
tree.column("quantity", width=100)
tree.pack(pady=15)
# ========== إطار الإدخال ==========
input_frame = tk.Frame(window)
input_frame.pack()
# الحقول: اسم المنتج
tk.Label(input_frame, text="اسم المنتج:").grid(row=0, column=0, padx=5)
entry_product = tk.Entry(input_frame)
entry_product.grid(row=0, column=1)
# السعر
tk.Label(input_frame, text="السعر:").grid(row=0, column=2, padx=5)
entry_price = tk.Entry(input_frame)
entry_price.grid(row=0, column=3)
# الكمية
tk.Label(input_frame, text="الكمية:").grid(row=0, column=4, padx=5)
entry_quantity = tk.Entry(input_frame)
entry_quantity.grid(row=0, column=5)
# ========== زر الإضافة ==========
def add_product():
product = entry_product.get()
price = entry_price.get()
quantity = entry_quantity.get()
if product and price and quantity:
tree.insert("", tk.END, values=(product, price, quantity))
entry_product.delete(0, tk.END)
entry_price.delete(0, tk.END)
entry_quantity.delete(0, tk.END)
btn_add = tk.Button(window, text="إضافة المنتج", command=add_product)
btn_add.pack(pady=10)
window.mainloop()
✅ شرح سريع:
| العنصر | الوظيفة |
|---|---|
Entry() |
لإدخال اسم المنتج والسعر والكمية. |
Button() |
عند الضغط عليه يتم تنفيذ add_product. |
tree.insert() |
لإضافة صف جديد إلى جدول المنتجات. |
🧪 ملاحظات:
- تأكد من إدخال القيم الثلاثة قبل الضغط على الزر.
- لا يوجد تحقق من أن السعر أو الكمية أرقام فقط (سنضيف ذلك لاحقًا لو أحببت).

