Tkinter

مقدمة إلى مكتبة Tkinter لتطوير واجهات المستخدم

تُعد مكتبة Tkinter واحدة من أقدم وأسهل الأدوات المتاحة في Python لتصميم وبناء واجهات المستخدم الرسومية (GUI). تتيح Tkinter للمبرمجين إنشاء تطبيقات سطح مكتب بسيطة وسريعة، وذلك عن طريق توفير مجموعة من الأدوات التفاعلية مثل الأزرار، القوائم، مربعات النص، النوافذ، وغيرها.
تأتي Tkinter مضمنة مع معظم توزيعات Python، مما يعني أنها لا تتطلب أي تثبيت إضافي. وتعتبر خيارًا مثاليًا لمن يريدون بناء تطبيقات بسيطة ومباشرة بسرعة، مثل أدوات سطح المكتب الصغيرة أو النماذج التفاعلية.

محتويات المقال:

  1. ما هي Tkinter؟
  2. أهمية استخدام Tkinter في تطوير التطبيقات
  3. كيفية تثبيت واستخدام Tkinter
  4. إنشاء نافذة بسيطة باستخدام Tkinter
  5. الأدوات التفاعلية (Widgets) الأساسية في Tkinter
  6. أمثلة عملية لاستخدام Tkinter

1. ما هي Tkinter؟

Tkinter هي المكتبة القياسية لواجهات المستخدم الرسومية في Python. تمثل Tkinter واجهة Python مع Tk، وهي أداة إنشاء واجهات رسومية شهيرة. توفر المكتبة للمستخدمين العديد من الأدوات التفاعلية (Widgets) الجاهزة التي يمكن استخدامها لتصميم الواجهات الرسومية بسرعة وسهولة.

الميزات الرئيسية لـ Tkinter:

  • واجهة سهلة الاستخدام: توفر Tkinter بيئة برمجية بسيطة تتيح لك إنشاء واجهات رسومية بسهولة باستخدام Python.
  • مكتبة مضمنة: تأتي Tkinter مع معظم إصدارات Python، مما يعني أنها لا تحتاج إلى تثبيت خارجي.
  • دعم متكامل للأدوات التفاعلية (Widgets): تحتوي على مجموعة واسعة من الأدوات التفاعلية مثل الأزرار، مربعات النصوص، القوائم، الجداول وغيرها.
  • تطوير تطبيقات متعددة المنصات: يمكن لتطبيقات Tkinter العمل على أنظمة التشغيل المختلفة مثل Windows وmacOS وLinux.

2. أهمية استخدام Tkinter في تطوير التطبيقات

1. سهولة التعلم والاستخدام

من بين المكتبات المتاحة في Python، تعتبر Tkinter واحدة من أسهل المكتبات التي يمكن تعلمها. تتيح لك تصميم واجهات رسومية بدون الحاجة إلى معرفة عميقة في تطوير واجهات المستخدم. حتى المبرمجين المبتدئين يمكنهم البدء باستخدام Tkinter بسرعة.

2. مكتبة جاهزة ومتكاملة

على عكس بعض المكتبات الأخرى التي تتطلب تثبيتًا إضافيًا، تأتي Tkinter مدمجة في معظم إصدارات Python، مما يسهل استخدامها في أي مشروع دون تعقيدات.

3. بناء تطبيقات سطح المكتب (Desktop Applications)

إذا كنت ترغب في بناء تطبيقات صغيرة أو أدوات مكتبية تعتمد على واجهة المستخدم الرسومية، فإن Tkinter توفر بيئة برمجة مرنة وسريعة لتلبية هذا الغرض.

4. دعم الأدوات التفاعلية المتنوعة

توفر Tkinter مجموعة غنية من الأدوات التفاعلية مثل النوافذ، الأزرار، مربعات الحوار، القوائم المنسدلة، وغيرها من الأدوات التي يمكن استخدامها لبناء واجهات مستخدم متكاملة.

5. تطوير متعدد المنصات

تدعم Tkinter تشغيل التطبيقات على أنظمة التشغيل المتعددة بدون الحاجة إلى تعديل الكود. يمكن تشغيل التطبيقات التي تم تطويرها باستخدام Tkinter على Windows، Linux، وmacOS بنفس الشكل والوظائف.


3. كيفية تثبيت واستخدام Tkinter

تثبيت Tkinter:

على الرغم من أن Tkinter تأتي مدمجة في معظم إصدارات Python، قد تحتاج إلى تثبيتها يدويًا في بعض الأنظمة. يمكنك التأكد من أن Tkinter مثبتة على نظامك باستخدام الأوامر التالية:

  • للتحقق مما إذا كانت Tkinter مثبتة:
python -m tkinter
Python
  • إذا تم فتح نافذة جديدة، فهذا يعني أن Tkinter مثبتة وجاهزة للاستخدام.
  • إذا لم تكن مثبتة على النظام، يمكنك تثبيتها باستخدام apt على أنظمة Ubuntu/Linux:
sudo apt-get install python3-tk
Python

استخدام Tkinter في Python:

بمجرد التأكد من تثبيت Tkinter، يمكنك البدء في استخدامها عن طريق استيرادها في برنامجك.

مثال بسيط لفتح نافذة باستخدام Tkinter:
import tkinter as tk

# إنشاء نافذة رئيسية
window = tk.Tk()

# ضبط عنوان النافذة
window.title("نافذة Tkinter بسيطة")

# تشغيل النافذة
window.mainloop()
Python

هذا البرنامج البسيط يقوم بإنشاء نافذة باستخدام Tkinter. الدالة mainloop() تضمن أن النافذة تبقى مفتوحة وتستجيب للأحداث حتى يقوم المستخدم بإغلاقها.


4. إنشاء نافذة بسيطة باستخدام Tkinter

لإنشاء تطبيق بواجهة رسومية باستخدام Tkinter، تحتاج إلى القيام بخطوات أساسية مثل إنشاء نافذة رئيسية، إضافة أدوات تفاعلية مثل الأزرار أو النصوص، وضبط الإعدادات الخاصة بالواجهة.

مثال لبرنامج بسيط يحتوي على زر:

import tkinter as tk

# إنشاء نافذة رئيسية
window = tk.Tk()
window.title("برنامج بسيط مع زر")

# إضافة زر
button = tk.Button(window, text="اضغط هنا", command=lambda: print("تم الضغط على الزر"))
button.pack()  # عرض الزر في النافذة

# تشغيل النافذة
window.mainloop()
Python

في هذا المثال:

  • قمنا بإنشاء نافذة رئيسية باستخدام Tk().
  • أضفنا زرًا باستخدام Button()، وقمنا بربط الزر بوظيفة تطبع رسالة عند الضغط عليه.
  • استخدمنا pack() لعرض الزر في النافذة.

5. الأدوات التفاعلية (Widgets) الأساسية في Tkinter

توفر Tkinter مجموعة واسعة من الأدوات التفاعلية (Widgets) التي يمكنك استخدامها في واجهة المستخدم. هذه الأدوات تتيح لك إضافة تفاعل مع المستخدمين مثل النقر على الأزرار، إدخال النصوص، استخدام القوائم، وغير ذلك.

أهم الأدوات التفاعلية في Tkinter:

Button (الزر):
الأزرار تُستخدم لتنفيذ أوامر معينة عند الضغط عليها.

button = tk.Button(window, text="اضغط هنا")
button.pack()
Python

Label (التسمية):
تُستخدم لإضافة نصوص ثابتة في واجهة المستخدم.

label = tk.Label(window, text="مرحباً بك في Tkinter!")
label.pack()
Python

Entry (مربع النص):
يُستخدم لإدخال نصوص قصيرة من المستخدم.

entry = tk.Entry(window)
entry.pack()
Python

Text (مربع النصوص الكبيرة):
يُستخدم لإدخال نصوص متعددة الأسطر.

text = tk.Text(window, height=5, width=30)
text.pack()
Python

Checkbutton (زر التحقق):
يُستخدم لإضافة خيارات يمكن للمستخدم تحديدها أو إلغاء تحديدها.

check = tk.Checkbutton(window, text="تفعيل")
check.pack()
Python

Radiobutton (زر الاختيار):
يُستخدم للسماح للمستخدم باختيار خيار واحد من مجموعة من الخيارات.

radio = tk.Radiobutton(window, text="خيار 1", value=1)
radio.pack()
Python

Combobox (القائمة المنسدلة):
تُستخدم لإتاحة خيارات متعددة للمستخدم للاختيار منها.

from tkinter import ttk
combobox = ttk.Combobox(window, values=["خيار 1", "خيار 2", "خيار 3"])
combobox.pack()
Python

6. أمثلة عملية لاستخدام Tkinter

بعد التعرف على الأساسيات، سنتناول في هذا القسم بعض الأمثلة العملية التي توضح كيفية استخدام Tkinter لبناء تطبيقات رسومية ذات وظائف متنوعة.

1. إنشاء تطبيق متعدد النوافذ

يمكنك بسهولة إنشاء تطبيق يحتوي على نوافذ متعددة باستخدام Tkinter. في هذا المثال، سنقوم بإنشاء نافذة رئيسية تحتوي على زر لفتح نافذة فرعية.

مثال لإنشاء نوافذ متعددة:
import tkinter as tk
from tkinter import Toplevel

# إنشاء النافذة الرئيسية
def open_new_window():
    # إنشاء نافذة فرعية
    new_window = Toplevel(window)
    new_window.title("نافذة فرعية")
    label = tk.Label(new_window, text="هذه نافذة فرعية!")
    label.pack()

# نافذة رئيسية
window = tk.Tk()
window.title("نافذة رئيسية")

# زر لفتح نافذة فرعية
open_window_button = tk.Button(window, text="افتح نافذة جديدة", command=open_new_window)
open_window_button.pack()

# تشغيل النافذة
window.mainloop()
Python

في هذا المثال:

  • قمنا بإنشاء نافذة رئيسية تحتوي على زر.
  • عند الضغط على الزر، يتم فتح نافذة فرعية باستخدام Toplevel().

2. استخدام مربعات الحوار (Dialog Boxes)

تتيح Tkinter للمبرمجين استخدام مربعات الحوار مثل الرسائل التحذيرية، مربعات الإدخال، ومربعات التأكيد، والتي تساعد على تفاعل المستخدم مع التطبيق بطريقة ديناميكية.

مثال لاستخدام مربعات الرسائل:
import tkinter as tk
from tkinter import messagebox

def show_info():
    messagebox.showinfo("معلومة", "تم الضغط على الزر بنجاح!")

def ask_question():
    answer = messagebox.askquestion("سؤال", "هل ترغب في المتابعة؟")
    if answer == 'yes':
        print("المستخدم اختار المتابعة.")
    else:
        print("المستخدم اختار الإلغاء.")

# نافذة رئيسية
window = tk.Tk()
window.title("مربعات الحوار")

# زر لعرض رسالة معلومات
info_button = tk.Button(window, text="عرض معلومات", command=show_info)
info_button.pack()

# زر لطرح سؤال
question_button = tk.Button(window, text="طرح سؤال", command=ask_question)
question_button.pack()

# تشغيل النافذة
window.mainloop()
Python

في هذا المثال:

  • قمنا باستخدام messagebox.showinfo() لعرض رسالة معلومات.
  • كما استخدمنا messagebox.askquestion() لطرح سؤال على المستخدم والحصول على رده.

3. تطبيق معادلة تفاعلية باستخدام مدخلات المستخدم

يمكنك استخدام Tkinter لإنشاء تطبيق بسيط يحسب نتيجة بناءً على مدخلات المستخدم. على سبيل المثال، لننشئ تطبيقًا يقوم بحساب مجموع رقمين يتم إدخالهما من خلال مربعي إدخال.

مثال على تطبيق لحساب مجموع رقمين:
import tkinter as tk

def calculate_sum():
    try:
        num1 = float(entry1.get())
        num2 = float(entry2.get())
        result = num1 + num2
        result_label.config(text=f"النتيجة: {result}")
    except ValueError:
        result_label.config(text="الرجاء إدخال أرقام صالحة.")

# نافذة رئيسية
window = tk.Tk()
window.title("حساب مجموع رقمين")

# إدخال الرقم الأول
label1 = tk.Label(window, text="أدخل الرقم الأول:")
label1.pack()
entry1 = tk.Entry(window)
entry1.pack()

# إدخال الرقم الثاني
label2 = tk.Label(window, text="أدخل الرقم الثاني:")
label2.pack()
entry2 = tk.Entry(window)
entry2.pack()

# زر لحساب المجموع
calc_button = tk.Button(window, text="حساب المجموع", command=calculate_sum)
calc_button.pack()

# عرض النتيجة
result_label = tk.Label(window, text="النتيجة:")
result_label.pack()

# تشغيل النافذة
window.mainloop()
Python

في هذا المثال:

  • يتم إدخال رقمين من خلال Entry.
  • عند الضغط على زر “حساب المجموع”، يتم جمع الرقمين وعرض النتيجة باستخدام Label.

4. تطبيق يحتوي على قائمة منسدلة (Combobox)

توفر مكتبة Tkinter أداة Combobox من خلال وحدة ttk، والتي تتيح لك إضافة قائمة منسدلة يمكن للمستخدم اختيار عنصر منها.

مثال على استخدام القائمة المنسدلة:
import tkinter as tk
from tkinter import ttk

def display_selection():
    selection = combobox.get()
    label.config(text=f"لقد اخترت: {selection}")

# نافذة رئيسية
window = tk.Tk()
window.title("قائمة منسدلة")

# إضافة القائمة المنسدلة
combobox = ttk.Combobox(window, values=["الخيار 1", "الخيار 2", "الخيار 3"])
combobox.pack()

# زر لعرض الخيار المحدد
button = tk.Button(window, text="عرض الخيار", command=display_selection)
button.pack()

# عرض النتيجة
label = tk.Label(window, text="اختر من القائمة")
label.pack()

# تشغيل النافذة
window.mainloop()
Python

في هذا المثال:

  • تم إضافة قائمة منسدلة تحتوي على ثلاثة خيارات.
  • يتم عرض الخيار الذي يختاره المستخدم عند الضغط على الزر.

5. بناء تطبيق يحتوي على شريط تقدم (Progress Bar)

تتيح مكتبة Tkinter أيضًا إمكانية إضافة Progress Bar لعرض تقدم العمليات. يمكن استخدام هذه الأداة عند تنفيذ العمليات التي تحتاج إلى وقت طويل وتحتاج لإظهار حالة التقدم للمستخدم.

مثال على شريط التقدم:
import tkinter as tk
from tkinter import ttk
import time

def start_progress():
    progress['value'] = 0
    window.update_idletasks()
    for i in range(101):
        time.sleep(0.05)
        progress['value'] = i
        window.update_idletasks()

# نافذة رئيسية
window = tk.Tk()
window.title("شريط التقدم")

# إضافة شريط التقدم
progress = ttk.Progressbar(window, orient=tk.HORIZONTAL, length=200, mode='determinate')
progress.pack()

# زر لبدء التقدم
button = tk.Button(window, text="ابدأ التقدم", command=start_progress)
button.pack()

# تشغيل النافذة
window.mainloop()
Python

في هذا المثال:

  • يتم عرض شريط تقدم يتم تحديثه تدريجيًا عند الضغط على زر “ابدأ التقدم”.

الأسئلة الشائعة (FAQ)

1. ما هي مكتبة Tkinter؟
Tkinter هي مكتبة قياسية في Python تُستخدم لبناء واجهات المستخدم الرسومية (GUI) بسهولة وسرعة.

2. كيف يمكنني تثبيت Tkinter؟
عادةً ما تكون Tkinter مدمجة مع معظم توزيعات Python. إذا لم تكن مثبتة، يمكنك تثبيتها باستخدام apt في أنظمة Linux عبر الأمر:

sudo apt-get install python3-tk
Python

3. هل يمكنني استخدام Tkinter لإنشاء تطبيقات معقدة؟
نعم، رغم أن Tkinter مصممة أساسًا لتطبيقات بسيطة، إلا أنها يمكن استخدامها لإنشاء تطبيقات رسومية متكاملة بميزات متنوعة.

4. هل يمكن لتطبيقات Tkinter العمل على أنظمة التشغيل المختلفة؟
نعم، تطبيقات Tkinter تعمل على أنظمة التشغيل المختلفة مثل Windows، Linux، وmacOS بدون الحاجة لتعديلات كبيرة.

روابط مفيدة للقراءة:


بهذا نكون قد استعرضنا الأساسيات والأمثلة العملية لاستخدام مكتبة Tkinter لبناء واجهات المستخدم الرسومية في Python. تعتبر Tkinter أداة قوية ومرنة لتطوير التطبيقات الرسومية، مما يجعلها خيارًا مثاليًا لبناء تطبيقات سطح مكتب بسرعة وسهولة.

تعليق واحد

اترك ردّاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *