दिलचस्प पोस्ट
JqGrid ऊपर पेजर (नेविगेशन बार) की स्थिति में असमर्थ JUnit के साथ यूनिट परीक्षण के लिए IntelliJ IDEA को कॉन्फ़िगर करना एंड्रॉइड में एक गतिविधि से किसी अन्य मूल्य का मूल्य कैसे पास करें? PHP में लक्षण – कोई वास्तविक दुनिया उदाहरण / सर्वोत्तम अभ्यास? क्या डब्ल्यू 3 सी सीआर के अनुसार मौजूदा सीएसएस फ्लेक्सिबल बॉक्स लेआउट मॉड्यूल के लिए कोई पॉलीफिल है (प्रदर्शन: फ्लेक्स इत्यादि)? मैं .NET के लिए अच्छा क्रैश डंप कैसे ले सकता हूं? एंड्रॉइड में सत्र का रखरखाव करना (सर्वर साइड पर एप्लिकेशन को प्रमाणीकृत करना) एप्लिकेशन के लिए डिफ़ॉल्ट आईओएस स्थानीय सूचना शैली सेट करें स्रोत और ImageView की पृष्ठभूमि के बीच अंतर क्या है सबसे सफ़ेद पर्स PostgreSQL का प्रयोग करके एक ही क्वेरी में कई पंक्तियों को अपडेट करें पायथन पुराने SSL संस्करण को संदर्भित करता है IOS – स्केल और फ़सल CMSampleBufferRef / CVImageBufferRef REST वेब सेवा से क्लाइंट को फाइल भेजने का सही तरीका क्या है? स्थानीय मशीन पर PHP सर्वर?

कीप्रेस पढ़ने के लिए पायथन विधि?

मैं पायथन के लिए नया हूँ, और मैंने सिर्फ एक गेम और एक मेनू पायथन में बनाया है प्रश्न यह है कि (raw_) इनपुट () का उपयोग करने की आवश्यकता है कि मैं हर किप्रेस के बाद एन्टर करने के लिए दबाएं, मैं इसे ऐसा करना चाहूंगा ताकि नीचे तीर दबाने से अगले मेनू आइटम को तुरंत चुना जाए, या गेम में नीचे चले जाएं फिलहाल, मुझे "डाउन" टाइप करने की आवश्यकता है और फिर Enter दबाएं मैंने भी काफी शोध किया है, लेकिन मैं एक एकल कुंजीडाउन () विधि को प्राप्त करने के लिए बहुत सारे मॉड्यूल (जैसे pygame) डाउनलोड नहीं करना चाहूंगा तो क्या कोई आसान तरीके हैं, जो मुझे मिल नहीं सका?

संपादित करें: बस पता चला है कि msvcrt.getch() चाल करना होगा यह कुंजी नहीं है (), लेकिन यह काम करता है हालांकि, मुझे यकीन नहीं है कि इसका उपयोग कैसे करना है, यह बहुत अजीब लगता है, यहां कोई मदद है? फिलहाल मुझे यही मिला:

 from msvcrt import getch while True: key = getch() print(key) 

हालांकि, यह मुझे इन सभी बकवास बाइट्स देता है, उदाहरण के लिए, नीचे तीर यह है:

 b'\xe0' b'P' 

और मुझे इसका पता नहीं है कि उनका उपयोग कैसे करना है, मैंने सीआर () () से तुलना करने का प्रयास किया है और यहां तक ​​कि ord () का उपयोग किया है लेकिन वास्तव में कोई भी तुलना नहीं कर सकता मैं जो करने की कोशिश कर रहा हूं वह मूल रूप से यह है:

 from msvcrt import getch while True: key = getch() if key == escape: break elif key == downarrow: movedown() elif key == 'a': ... 

और इतने पर … कोई मदद?

Solutions Collecting From Web of "कीप्रेस पढ़ने के लिए पायथन विधि?"

सभी चीजों को अपने द्वारा परीक्षण करके इसे समझा। इसके बारे में कोई भी विषय नहीं मिल सका, इसलिए मैं यहां समाधान छोड़ूँगा। यह एकमात्र या सबसे अच्छा समाधान नहीं हो सकता है, लेकिन यह मेरे उद्देश्यों (मिलन की सीमाओं के भीतर) के लिए काम करता है और कुछ भी नहीं से बेहतर है।

नोट: उचित keyDown() जो सभी चाबी और वास्तविक कुंजी प्रेस को पहचानते हैं, अभी भी मूल्यवान है।

समाधान: ord() का उपयोग करने से पहले getch() को पूर्णांक में बदलना (मुझे लगता है कि वे आभासी कुंजी कोड हैं, लेकिन यह भी निश्चित नहीं है) ठीक काम करता है, और फिर परिणाम को वांछित कुंजी का प्रतिनिधित्व करने वाली वास्तविक संख्या की तुलना कर रहा है। इसके अलावा, अगर मुझे इसकी आवश्यकता होती है, तो मैं लौटाई गई संख्या के आस-पास एक अतिरिक्त chr() जोड़ सकता हूं ताकि वह इसे एक चरित्र के रूप में परिवर्तित कर सके। हालांकि, मैं ज्यादातर नीचे तीर, esc, आदि का उपयोग कर रहा हूं। इसलिए उन लोगों को एक चरित्र में परिवर्तित करना बेवकूफी होगी। यहां अंतिम कोड है:

 from msvcrt import getch while True: key = ord(getch()) if key == 27: #ESC break elif key == 13: #Enter select() elif key == 224: #Special keys (arrows, f keys, ins, del, etc.) key = ord(getch()) if key == 80: #Down arrow moveDown() elif key == 72: #Up arrow moveUp() 

इसके अलावा, अगर किसी और की जरूरत है, तो आप आसानी से Google की कुंजीकोड, या अजगर का उपयोग करके और कुंजी दबा कर पा सकते हैं:

 from msvcrt import getch while True: print(ord(getch())) 

एमएसडीएन मेच डॉक्स देखें विशेष रूप से:

_getch और_getwch फ़ंक्शंस वर्ण गूंजने के बिना कंसोल से एक अक्षर पढ़ता है। इनमें से कोई भी कार्य CTRL + C पढ़ने के लिए नहीं किया जा सकता है फ़ंक्शन कुंजी या तीर कुंजी को पढ़ते समय, प्रत्येक फ़ंक्शन को दो बार कहा जाना चाहिए; पहला कॉल 0 या 0xE0 देता है, और दूसरा कॉल वास्तविक कुंजी कोड देता है।

पायथन फ़ंक्शन एक चरित्र देता है। आप एक पूर्णांक मान प्राप्त करने के लिए ord() का प्रयोग कर सकते हैं, उदाहरण के लिए, keycode = ord(msvcrt.getch())

इसलिए यदि आप 0x00 या 0xE0 पढ़ते हैं, तो तीर या फ़ंक्शन कुंजी के लिए कुंजी कोड प्राप्त करने के लिए इसे दूसरी बार पढ़ें प्रयोग से, 0x00 के पहले एफ 1-एफ 10 (0x3B-0x44) और 0xE0 तीर कुंजियों और INS / Del / Home / End / PageUp / PageDown से पहले है।

 from msvcrt import getch pos = [0, 0] def fright(): global pos pos[0] += 1 def fleft(): global pos pos[0] -= 1 def fup(): global pos pos[1] += 1 def fdown(): global pos pos[1] -= 1 while True: print'Distance from zero: ', pos key = ord(getch()) if key == 27: #ESC break elif key == 13: #Enter print('selected') elif key == 32: #Space print('jump') elif key == 224: #Special keys (arrows, f keys, ins, del, etc.) key = ord(getch()) if key == 80: #Down arrow print('down') fdown elif key == 72: #Up arrow print('up') fup() elif key == 75: #Left arrow print('left') fleft() elif key == 77: #Right arrow print('right') fright()