सबसे पहले मैं कहना चाहता हूं कि मुझे पता है कि शाप के साथ समाधान है।
मेरा प्रोग्राम एक समय लूप है जो हर सेकेंड चलाया जाता है। हर सेकेंड मैं आखिरी कुंजी प्राप्त करना चाहता हूं जिसे दबाया गया था या दबाया गया था। तो अगर आप लूप सोते समय एक कुंजी दबाते हैं तो मैं चाहता हूं कि कुंजी सहेजी गई है, इसलिए मैं उस कुंजी को प्राप्त कर सकता हूं जिसे पिछली बार दबाया गया था जब भी इसे दबाया नहीं जाता था। मैं नहीं चाहता कि सहेजी गई कुंजी इसे प्राप्त करने के बाद "हटाया" जाए। तो जब उपयोगकर्ता ने "ए" कुंजी दबाई तो मैं इसे दूसरी बार प्राप्त करना चाहता हूं जब तक कि वह दूसरी कुंजी दबाए। यदि एक विशिष्ट कुंजी दबाया गया था तो मैं पाठ मुद्रित करना चाहता हूं।पायथन में दबाए गए आखिरी कुंजी को कैसे प्राप्त करें?
./test.py > file.txt
मेरे अजगर programm शाप के साथ हल इस तरह दिखता है: यह पाठ मैं stdout के पुनर्निर्देशन का उपयोग करते हुए एक फ़ाइल में लिखना चाहते
import curses
from time import sleep
stdscr=curses.initscr()
stdscr.nodelay(1)
curses.noecho()
curses.cbreak()
while True:
char=stdscr.getch()
if char == 111: #111 = "o" key
print("test")
break
elif char == 97 #97 = "a" key
#code that have to be run every second
#if the a key is the last pressed key!
sleep(1)
curses.nocbreak()
curses.echo()
curses.endwin()
समस्या इस समाधान obout कि शाप मुझे पागल कर देता है उत्पादन। मैं केवल एक समय 'ओ' कुंजी दबाएँ और बाद programm बंद कर दिया file.txt इस तरह दिखता है:
^[[?1049h^[[1;30r^[(B^[[m^[[4l^[[?7h^[[H^[[2Jtest
^[[30;1H^[[?1049l^M^[[?1l^[>
लेकिन यह इस तरह दिखना चाहिए:
test
मैं किसी को अगर बहुत आभारी होंगे एक जवाब लिखता है। मुझे पता है कि पाइथन कुंजीपटल घटनाओं का उपयोग कर प्रोग्राम के लिए सबसे अच्छा विकल्प नहीं है। लेकिन मेरे पास कारण हैं कि मैं इसके लिए अजगर का उपयोग क्यों करता हूं।
आपके उत्तरों के लिए बहुत पहले से धन्यवाद।
तो आप के बजाय stdout पुनः निर्देशित की अपनी फ़ाइल को सीधे लिखा है - तो आप "पागल नहीं होगा उत्पादन "आपकी फाइल में श्राप से ... –
मेरे पास कुछ अन्य प्रोग्राम हैं जो एक .fifo में लिख रहे हैं और मैं हमेशा पुनर्निर्देशन का उपयोग करता हूं। मैं यह "प्रारूप" रखना चाहता हूं कि मैं उन्हें आसानी से संभाल सकूं। – timakro