สร้างเมนู Python แบบ Real-Time
: ไม่ต้องกด Enter อีกต่อไป!
การสร้างเมนูที่มีปฏิสัมพันธ์ใน Python มักจะเป็นเรื่องที่ง่ายและตรงไปตรงมา อย่างไรก็ตาม หากคุณต้องการปรับปรุงประสบการณ์ของผู้ใช้โดยให้การเลือกสามารถทำได้ด้วยการกดแป้นพิมพ์แทนที่จะให้ผู้ใช้กด Enter
คุณอาจจะพบว่าตัวเองอยู่ในสถานการณ์ที่ยุ่งยาก ในโพสต์บล็อกนี้ เราจะสำรวจปัญหาที่ต้องการให้กดปุ่ม Enter
เพื่อยืนยันการเลือกเมนู และเสนอวิธีแก้ปัญหาที่ใช้การตรวจจับการป้อนข้อมูลจากแป้นพิมพ์
เข้าใจปัญหา
ในแอปพลิเคชันคอนโซลแบบดั้งเดิม วิธีการป้อนข้อมูลของผู้ใช้ เช่น raw_input()
(หรือเพียง input()
ใน Python 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
คู่มือทีละขั้นตอน
-
นำเข้าไลบรารี เริ่มต้นด้วยการนำเข้าไลบรารี
msvcrt
ซึ่งช่วยให้เราสามารถโต้ตอบกับการป้อนข้อมูลจากแป้นพิมพ์ในคอนโซลได้import msvcrt
-
จับการกดแป้นพิมพ์ ใช้ฟังก์ชัน
getch()
เพื่อรอการกดแป้นพิมพ์หนึ่งครั้ง ทำให้โปรแกรมสามารถทำงานในขณะที่ปุ่มถูกกดanswer = msvcrt.getch()
-
ดำเนินการเมนู ตอนนี้ เรามาสร้างเมนูง่าย ๆ ที่ฟังการกดปุ่ม
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
หรือไม่ ซึ่งจะดำเนินการที่เหมาะสมและจากนั้นออกจากลูป
สรุป
โดยการปฏิบัติตามขั้นตอนที่กล่าวถึงข้างต้น คุณสามารถสร้างประสบการณ์เมนูที่มีประสิทธิภาพและเป็นมิตรกับผู้ใช้ในแอปพลิเคชัน Python ของคุณ ด้วยความช่วยเหลือของไลบรารี msvcrt
ที่อนุญาตให้ตรวจจับการกดปุ่มทันที ผู้ใช้สามารถมีส่วนร่วมกับโปรแกรมของคุณได้โดยไม่ต้องกดปุ่ม Enter
ที่ยุ่งยาก
ตอนนี้คุณสามารถปรับปรุงแอปพลิเคชันในคอนโซลและสร้างปฏิสัมพันธ์ที่ราบรื่นให้กับผู้ใช้ ขอให้สนุกกับการเขียนโค้ด!