إنشاء قائمة بايثون في الوقت الحقيقي: لا حاجة للضغط على مفتاح الإدخال بعد الآن!

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

فهم المشكلة

في التطبيقات التقليدية على وحدة التحكم، تتطلب طرق إدخال المستخدم مثل raw_input() (أو فقط input() في بايثون 3) عادةً من المستخدمين الضغط على مفتاح Enter بعد اختيار خيار. يمكن أن يؤدي ذلك إلى تقليل تجربة المستخدم، خاصةً في سياق القوائم حيث يكون الاستجابة السريعة مرغوبة.

الكود الحالي الذي قدمه المستخدم هو كما يلي:

import sys
print """القائمة
1) قول Foo
2) قول Bar"""
answer = raw_input("قم بعمل اختيار> ")

if "1" in answer: print "foo"
elif "2" in answer: print "bar"

كما هو، يتطلب هذا الكود من المستخدم ضغط مفتاح Enter بعد كتابة اختياره. لكن هناك طريقة أفضل!

الحل: استخدام msvcrt

إذا كنت على منصة Windows، يمكن لمكتبة msvcrt مساعدتنا في تحقيق اكتشاف إدخال الوقت الحقيقي. الدالة الرئيسية هنا هي getch()، التي تلتقط ضغط مفتاح على الفور دون الانتظار للضغط على Enter.

دليل خطوة بخطوة

  1. استيراد المكتبة ابدأ باستيراد مكتبة msvcrt التي تسمح لنا بالتفاعل مع إدخال لوحة مفاتيح وحدة التحكم.

    import msvcrt
    
  2. التقاط ضغط المفتاح
    استخدم دالة getch() للانتظار لضغط مفتاح واحد، مما يسمح للبرنامج بالتصرف في اللحظة التي يتم فيها الضغط على المفتاح.

    answer = msvcrt.getch()
    
  3. تنفيذ القائمة الآن، دعنا نضع هذا في السياق من خلال إنشاء قائمة بسيطة تستمع لضغطة المفتاح 1 أو 2 دون حاجة لـ Enter.

    import msvcrt
    
    print("القائمة")
    print("1) قول Foo")
    print("2) قول Bar")
    
    while True:  # حلقة إلى ما لا نهاية للاستمرار في التحقق من ضغط المفتاح
        answer = msvcrt.getch()  # انتظر ضغط المفتاح
    
        if answer == b'1':  # إذا تم ضغط '1'
            print("foo")
            break  # اخرج من الحلقة بعد الرد
        elif answer == b'2':  # إذا تم ضغط '2'
            print("bar")
            break  # اخرج من الحلقة بعد الرد
    

كيفية عمله

  • يتم عرض القائمة، ويدخل البرنامج حلقة.
  • تقوم الدالة getch() بإيقاف البرنامج حتى يضغط المستخدم على مفتاح.
  • بعد اكتشاف المفتاح، يتحقق مما إذا كان يتطابق مع 1 أو 2، وينفذ الإجراء المناسب، ثم يخرج من الحلقة.

الخاتمة

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

الآن، يمكنك تعزيز تطبيقات وحدة التحكم الخاصة بك وتقديم تفاعل أكثر سلاسة للمستخدمين. نتمنى لك ترميزاً سعيداً!