الدرس 14: إضافة الصور في واجهات Tkinter

📌 ما سنتعلمه في هذا الدرس:

  • كيفية تحميل وعرض الصور داخل نافذة Tkinter.
  • استخدام PhotoImage لعرض الصور.
  • التعامل مع صيغ الصور المدعومة.
  • كيفية إدراج الصور في عناصر مثل Label, Button.
الدرس 14: إضافة الصور في واجهات Tkinter

🖼️ عرض صورة باستخدام Label

Tkinter يدعم الصور بصيغ .gif, .png باستخدام الكائن PhotoImage. لعرض صورة:

import tkinter as tk

# إنشاء النافذة
root = tk.Tk()
root.title("عرض صورة")
root.geometry("300x300")

# تحميل الصورة (يفضل أن تكون PNG أو GIF)
الصورة = tk.PhotoImage(file="python_logo.png")

# عرضها داخل Label
label = tk.Label(root, image=الصورة)
label.pack()

root.mainloop()

ملاحظة: تأكد أن ملف الصورة في نفس مجلد السكربت.


📌 إضافة صورة إلى زر (Button)

يمكنك إضافة صورة للزر باستخدام نفس الطريقة:

button = tk.Button(root, image=الصورة, command=lambda: print("تم الضغط!"))
button.pack()

🧠 ملاحظات مهمة:

  • الصور يجب أن تبقى في متغير (مثل photo) طوال مدة عرضها.
  • إذا وضعت الصورة داخل دالة بدون ربطها بمتغير عام، قد لا تظهر (لأنها تُمسح من الذاكرة).
  • استخدم مكتبة PIL (Pillow) لعرض صور بصيغ أخرى مثل JPEG (سنشرح ذلك لاحقًا).


🧪 التمرين التطبيقي: عرض صورة مع زر

📋 المطلوب:

  1. أنشئ نافذة باستخدام Tkinter.
  2. اعرض صورة في منتصف النافذة باستخدام Label.
  3. أضف زرًا أسفل الصورة.
  4. عند الضغط على الزر، يتم طباعة جملة: "تم الضغط على الزر" في الطرفية.

الحل الكامل:

import tkinter as tk

# إنشاء النافذة
root = tk.Tk()
root.title("تمرين عرض صورة")
root.geometry("400x400")

# تحميل الصورة (تأكد أن الصورة باسم 'python_logo.png' وفي نفس المجلد)
photo = tk.PhotoImage(file="python_logo.png")

# عرض الصورة داخل Label
image_label = tk.Label(root, image=photo)
image_label.pack(pady=20)

# زر أسفل الصورة
def عند_الضغط():
    print("تم الضغط على الزر")

زر = tk.Button(root, text="اضغط هنا", command=عند_الضغط)
زر.pack()

# تشغيل التطبيق
root.mainloop()

📝 ملاحظات:

  • تأكد من وجود صورة باسم python_logo.png في نفس المجلد.
  • يمكنك تغيير اسم الصورة أو مسارها حسب الحاجة.
  • استخدم صورة بصيغة .png أو .gif لتعمل بشكل مباشر في Tkinter.

إرسال تعليق

0 تعليقات