Python GUI Programming

إتقان عنصر الإدخال في Tkinter: دليل شامل

Spread the love

تُعدّ عنصر واجهة المستخدم Entry في مكتبة Tkinter عنصرًا بالغ الأهمية لبناء تطبيقات تفاعلية، حيث تسمح للمستخدمين بإدخال نصّ من سطر واحد. يقدّم هذا البرنامج التعليمي دليلًا شاملاً لاستخدام عنصر واجهة المستخدم Entry، ويتناول الاستخدام الأساسي، وتعيين النصّ الافتراضي، ومعالجة إدخال المستخدم.

جدول المحتويات

إنشاء عنصر واجهة مستخدم Entry أساسي

لنبدأ بمثال بسيط لإنشاء وعرض عنصر واجهة المستخدم Entry:


import tkinter as tk

root = tk.Tk()
root.title("مثال على Tkinter Entry")

entry = tk.Entry(root)
entry.pack(pady=20)

root.mainloop()

يقوم هذا الكود باستيراد مكتبة tkinter، وإنشاء نافذة التطبيق الرئيسيّة، وإضافة عنصر واجهة المستخدم Entry، ثمّ بدء حلقة الأحداث الرئيسية. تُوَضّع طريقة pack() عنصر واجهة المستخدم Entry مع 20 بكسل من الحشو الرأسي.

تعيين النصّ الافتراضي وتأثيرات النصّ الظّاهري (Placeholder)

يُحسّن توفير نصّ افتراضي داخل عنصر واجهة المستخدم Entry تجربة المستخدم. في حين أن مجرد إدراج نصّ باستخدام insert(0, "text") يعمل، إلّا أنّه من الأنسب إنشاء نصّ ظاهري (Placeholder) يختفي عند نقر المستخدم داخل الحقل. يتطلّب هذا ربط حدث، سنُبيّنه أدناه:


import tkinter as tk

def on_entry_click(event):
    if entry.get() == "أدخل النص هنا":
        entry.delete(0, tk.END)
        entry.insert(0, "")
        entry.config(fg = 'black')

def on_focusout(event):
    if entry.get() == "":
        entry.insert(0, "أدخل النص هنا")
        entry.config(fg = 'grey')


root = tk.Tk()
root.title("Tkinter Entry مع نص ظاهري")

entry = tk.Entry(root)
entry.insert(0, "أدخل النص هنا")
entry.config(fg = 'grey')
entry.bind("", on_entry_click)
entry.bind("", on_focusout)
entry.pack(pady=20)

root.mainloop()

يستخدم هذا المثال المُحسّن دالتين، on_entry_click و on_focusout، مرتبطتين بأحداث <FocusIn> و <FocusOut>، على التوالي. تدير هاتان الدالتان النصّ الظاهري، حيث تُزال عند التركيز، وتُستعاد عندما يفقد الحقل التركيز.

استرجاع ومعالجة إدخال المستخدم

لاسترجاع النصّ الذي أدخله المستخدم، استخدم طريقة get(). إليك كيفية دمج هذا في مثالنا:


import tkinter as tk

# ... (كود النص الظاهري من المثال السابق) ...

def get_input():
    user_input = entry.get()
    print(f"أدخل المستخدم: {user_input}")

button = tk.Button(root, text="الحصول على الإدخال", command=get_input)
button.pack(pady=10)

root.mainloop()

يضيف هذا زرًا، عند النقر عليه، ينادي دالة get_input(). تسترجع هذه الدالة النصّ من عنصر واجهة المستخدم Entry باستخدام entry.get() وتطبعه على وحدة التحكم. يُبيّن هذا طريقةً أساسيةً لمعالجة إدخال المستخدم؛ ستكون هناك حاجة إلى معالجة أخطاء وتحقيق صحة بيانات أكثر تطوّرًا في تطبيق إنتاج.

يُقدّم هذا البرنامج التعليمي أساسًا متينًا للعمل مع عنصر واجهة المستخدم Entry في Tkinter. تذكّر بالتجربة والاستكشاف أكثر لبناء تطبيقات أكثر تعقيدًا وتفاعلية.

اترك تعليقاً

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