في هذا الدرس سنتعلم كيف نستخدم ملفات JSON لتخزين واسترجاع البيانات من داخل تطبيق Tkinter، وهي خطوة مهمة جدًا لأي برنامج يتطلب حفظ بيانات المستخدم مثل الإعدادات أو المدخلات.
📌 ما هو JSON؟
- JSON هو اختصار لـ: JavaScript Object Notation.
- صيغة لتخزين البيانات على شكل مفتاح:قيمة (
key: value) ويمكن قراءتها بسهولة باستخدام بايثون. - تستخدم كثيرًا بدل قواعد البيانات في التطبيقات البسيطة.
🎯 ما سنتعلمه اليوم:
- حفظ بيانات إلى ملف
.json. - قراءة البيانات من الملف وعرضها داخل واجهة Tkinter.
- ربط ذلك بأزرار الإدخال والعرض.
🧪 مثال تطبيقي: حفظ واسترجاع بيانات مستخدم
✅ الكود:
import tkinter as tk
import json
from tkinter import messagebox
# دالة لحفظ البيانات في ملف JSON
def save_data():
data = {
"name": name_entry.get(),
"age": age_entry.get()
}
with open("user_data.json", "w") as file:
json.dump(data, file)
messagebox.showinfo("تم الحفظ", "تم حفظ البيانات بنجاح!")
# دالة لعرض البيانات المحفوظة
def load_data():
try:
with open("user_data.json", "r") as file:
data = json.load(file)
name_entry.delete(0, tk.END)
age_entry.delete(0, tk.END)
name_entry.insert(0, data["name"])
age_entry.insert(0, data["age"])
except FileNotFoundError:
messagebox.showwarning("تحذير", "لا يوجد بيانات محفوظة بعد.")
# واجهة التطبيق
window = tk.Tk()
window.title("حفظ بيانات المستخدم")
window.geometry("300x200")
tk.Label(window, text="الاسم:").pack(pady=5)
name_entry = tk.Entry(window)
name_entry.pack()
tk.Label(window, text="العمر:").pack(pady=5)
age_entry = tk.Entry(window)
age_entry.pack()
tk.Button(window, text="حفظ البيانات", command=save_data).pack(pady=10)
tk.Button(window, text="عرض البيانات", command=load_data).pack()
window.mainloop()
💡 ما يحدث هنا:
- المستخدم يدخل اسمه وسنه.
- عند الضغط على "حفظ البيانات"، تُخزن المدخلات في ملف اسمه
user_data.json. - عند الضغط على "عرض البيانات"، يتم تحميل البيانات من الملف وإظهارها في الحقول.
✅ التمرين البسيط المطلوب:
أنشئ نموذجًا يحفظ "اسم المستخدم" و"البريد الإلكتروني" و"الدولة"، واستعرضها من ملف
user_profile.json.
✅ كود البرنامج: حفظ واسترجاع ملف تعريف مستخدم
import tkinter as tk
import json
from tkinter import messagebox
# دالة لحفظ البيانات في ملف JSON
def save_profile():
data = {
"username": username_entry.get(),
"email": email_entry.get(),
"country": country_entry.get()
}
with open("user_profile.json", "w") as file:
json.dump(data, file)
messagebox.showinfo("تم الحفظ", "تم حفظ البيانات في user_profile.json")
# دالة لعرض البيانات من ملف JSON
def load_profile():
try:
with open("user_profile.json", "r") as file:
data = json.load(file)
username_entry.delete(0, tk.END)
email_entry.delete(0, tk.END)
country_entry.delete(0, tk.END)
username_entry.insert(0, data.get("username", ""))
email_entry.insert(0, data.get("email", ""))
country_entry.insert(0, data.get("country", ""))
except FileNotFoundError:
messagebox.showwarning("تنبيه", "لم يتم العثور على الملف.")
# واجهة البرنامج
window = tk.Tk()
window.title("ملف تعريف المستخدم")
window.geometry("300x250")
tk.Label(window, text="اسم المستخدم:").pack(pady=5)
username_entry = tk.Entry(window)
username_entry.pack()
tk.Label(window, text="البريد الإلكتروني:").pack(pady=5)
email_entry = tk.Entry(window)
email_entry.pack()
tk.Label(window, text="الدولة:").pack(pady=5)
country_entry = tk.Entry(window)
country_entry.pack()
tk.Button(window, text="حفظ البيانات", command=save_profile).pack(pady=10)
tk.Button(window, text="عرض البيانات", command=load_profile).pack()
window.mainloop()
💾 الملف الناتج (user_profile.json) سيكون بهذا الشكل مثلًا:
{
"username": "Tamer",
"email": "tamer@example.com",
"country": "Zambia"
}

