Gerçek Zamanlı Bir Python Menüsü Oluşturun: Artık Enter Tuşuna Gerek Yok!

Python’da etkileşimli menüler oluşturmak genellikle basit ve doğrudandır. Ancak, kullanıcıların seçimlerini Enter tuşuna basmak yerine bir tuş vuruşuyla yapmalarına olanak tanıyarak kullanıcı deneyimini geliştirmek istiyorsanız, kendinizi bir çıkmazda bulabilirsiniz. Bu blog yazısında, menü seçimlerini onaylamak için Enter tuşunu kullanma gerekliliğine dair sorunu inceleyeceğiz ve klavye girişi algılama ile ilgili bir çözüm sunacağız.

Sorunun Anlaşılması

Geleneksel konsol uygulamalarında, raw_input() (veya Python 3’te input()) gibi kullanıcı girişi yöntemleri genellikle kullanıcıların bir seçenek seçtikten sonra Enter tuşuna basmalarını gerektirir. Bu durum, hızlı bir yanıt beklenen menüler bağlamında kullanıcı deneyimini olumsuz etkileyebilir.

Kullanıcının sağladığı mevcut kod şu şekildedir:

import sys
print """Menü
1) Foo de
2) Bar de"""
answer = raw_input("Bir seçim yapın> ")

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

Mevcut haliyle bu kod, kullanıcının seçim yapsa bile Enter tuşuna basmasını gerektirir. Fakat daha iyi bir yol var!

Çözüm: msvcrt Kullanımı

Eğer bir Windows platformunda iseniz, msvcrt kütüphanesi gerçek zamanlı girdi algılama konusunda bize yardımcı olabilir. Burada anahtar işlev getch()‘dir; bu işlev, sırası beklemeden hemen bir tuş vuruşunu yakalar.

Adım Adım Rehber

  1. Kütüphaneyi İçe Aktarma Konsolun klavye girişi ile etkileşimde bulunmamızı sağlayan msvcrt kütüphanesini içe aktararak başlayın.

    import msvcrt
    
  2. Tuş Vuruşunu Yakalama Programın tuş basımını yakalaması için getch() fonksiyonunu kullanarak tek bir tuş vuruşunu bekleyin.

    answer = msvcrt.getch()
    
  3. Menüyü Uygulama Şimdi, Enter tuşuna ihtiyaç duymadan 1 veya 2 tuşunu dinleyen basit bir menü oluşturarak bunu bağlama koyalım.

    import msvcrt
    
    print("Menü")
    print("1) Foo de")
    print("2) Bar de")
    
    while True:  # Sürekli döngü, tuş basımını kontrol etmeye devam etmek için
        answer = msvcrt.getch()  # Tuş basımını bekle
    
        if answer == b'1':  # Eğer '1' tuşu basılıysa
            print("foo")
            break  # Yanıt verdikten sonra döngüden çık
        elif answer == b'2':  # Eğer '2' tuşu basılıysa
            print("bar")
            break  # Yanıt verdikten sonra döngüden çık
    

Nasıl Çalışır?

  • Menü görüntülendiğinde program bir döngüye girer.
  • getch() fonksiyonu, kullanıcı tuşa basana kadar programı durdurur.
  • Tuş algılandığında, 1 veya 2 ile eşleşip eşleşmediğini kontrol eder, uygun işlemi gerçekleştirir ve ardından döngüden çıkar.

Sonuç

Yukarıda belirtilen adımları izleyerek, Python uygulamalarınızda daha etkili ve kullanıcı dostu bir menü deneyimi oluşturabilirsiniz. msvcrt kütüphanesi anlık tuş algılamaya olanak tanıyarak kullanıcıların programınızla Enter tuşuna basma zahmeti olmadan etkileşimde bulunmalarını sağlar.

Artık konsol uygulamalarınızı geliştirebilir ve kullanıcılara daha akıcı bir etkileşim sunabilirsiniz. İyi kodlamalar!