🎯 الهدف: التعرف على مكتبة ttk (Themed Tkinter Widgets) التي تقدم عناصر واجهة مستخدم بمظهر عصري وحديث أكثر من عناصر tkinter التقليدية.
🧩 ما هي مكتبة ttk؟
ttk هي اختصار لـ themed tkinter، وتُستخدم لتحسين شكل العناصر مثل الأزرار، المربعات النصية، الـ Combobox وغيرها، وتمنح مظهرًا أكثر حداثة وتنسيقًا تلقائيًا حسب النظام.
✅ مثال تطبيقي: إنشاء نموذج تسجيل باستخدام ttk
import tkinter as tk
from tkinter import ttk
# إنشاء النافذة الرئيسية
window = tk.Tk()
window.title("نموذج تسجيل حديث")
window.geometry("300x200")
# اسم المستخدم
ttk.Label(window, text="اسم المستخدم:").pack(pady=5)
username_entry = ttk.Entry(window)
username_entry.pack()
# كلمة المرور
ttk.Label(window, text="كلمة المرور:").pack(pady=5)
password_entry = ttk.Entry(window, show="*")
password_entry.pack()
# زر التسجيل
def register():
user = username_entry.get()
pwd = password_entry.get()
print("تم تسجيل:", user)
ttk.Button(window, text="تسجيل", command=register).pack(pady=10)
# تشغيل التطبيق
window.mainloop()
🧠 ملاحظات:
- جميع العناصر هنا مثل
ttk.Label,ttk.Entry,ttk.Button، مأخوذة من مكتبةttk. - الشكل يكون أنيقًا تلقائيًا حسب مظهر نظام التشغيل (Windows/Mac/Linux).
✅ تمرين تطبيقي بسيط:
✏️ المطلوب:
أنشئ واجهة تحتوي على:
- قائمة منسدلة (Combobox) لاختيار بلد.
- زر "عرض الاختيار".
- عند الضغط على الزر، يتم طباعة البلد المختار في نافذة الأوامر.
✅ كود تمرين: اختيار الدولة من قائمة منسدلة
import tkinter as tk
from tkinter import ttk
# إنشاء نافذة التطبيق
window = tk.Tk()
window.title("اختيار الدولة")
window.geometry("300x150")
# قائمة الدول
countries = ["مصر", "السعودية", "الأردن", "المغرب", "تونس", "الكويت"]
# إضافة تسمية
ttk.Label(window, text="اختر دولتك:").pack(pady=10)
# إنشاء القائمة المنسدلة
country_var = tk.StringVar()
country_combo = ttk.Combobox(window, textvariable=country_var, values=countries, state="readonly")
country_combo.pack()
# دالة عند الضغط على الزر
def show_selection():
selected = country_var.get()
print("الدولة المختارة هي:", selected)
# زر عرض الاختيار
ttk.Button(window, text="عرض الاختيار", command=show_selection).pack(pady=10)
# تشغيل التطبيق
window.mainloop()
💡 ماذا تعلمنا هنا؟
- استخدمنا
ttk.Comboboxلإنشاء قائمة منسدلة. - حددنا الخاصية
state="readonly"لمنع إدخال يدوي. - استخدمنا متغير
StringVar()لربط القيمة المختارة.

