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
-
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
-
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()
-
Menüyü Uygulama Şimdi,
Enter
tuşuna ihtiyaç duymadan1
veya2
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
veya2
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!