मैं अजगर 3 का उपयोग कर एक छोटे उपयोगिता आवेदन लेखन किया गया है (नीचे testcase भी अजगर 2 में काम करता है फिर भी,) और पीईक्यूटी 4 जो code
मॉड्यूल का उपयोग करता है ताकि एक क्यूटी विंडो के साथ बातचीत की अनुमति देने के लिए एक आरईपीएल प्रॉम्प्ट उत्पन्न हो सके।टर्मिनल (अदृश्य पाठ/कोई गूंज) से बाहर निकलने के बाद() इनपुट के दौरान()/raw_input()
दुर्भाग्य से मैं एक समस्या मैं हल करने में असमर्थ किया गया है पर पहुंच जाते हैं: मैं एप्लिकेशन exit()
जबकि code
input()
(पायथन 2.x में raw_input()
के रूप में जाना जाता है) के अंदर हो जाता है, मेरी लिनक्स टर्मिनल बाद अब गूँज वर्ण टाइप किया है। अर्थात। input()
द्वारा जारी कुछ बचने के अनुक्रम के कारण टर्मिनल टूटे हुए राज्य में छोड़ा गया प्रतीत होता है।
मैं exit
चल रहा है, वास्तव में इनपुट करने के लिए exit()
सौंपने से बाहर निकलने के लिए stdin
धारा का अनुकरण करने की कोशिश कर रहा करने के लिए करने के लिए दृष्टिकोण की एक किस्म की कोशिश की है इसे ठीक करने, पूर्व curses
मॉड्यूल और अन्य साधनों का उपयोग कर टर्मिनल रीसेट करने से() (unfornunately code.InteractiveConsole.push()
कि जिस तरह से काम नहीं करता है, के रूप में एक सोच सकते हैं कि यह होगा), लिखने की कोशिश कर के लिए अपने खुद के threading
का उपयोग कर गैर-अवरुद्ध input()
, लेकिन मैं एक साथ काम कर रहे कुछ खींच नहीं कर पाए थे।
Here, here, here और here समान समस्याओं के बारे में चर्चाएं हैं।
#!/usr/bin/env python3
import code
import sys
from PyQt4.QtGui import QApplication, QWidget
app = QApplication(sys.argv)
app.lastWindowClosed.connect(exit)
widget = QWidget()
widget.show()
code.interact()
उन के साथ (Py) क्यूटी अपरिचित, यह एक खाली विंडो खुल जाएगा, और जब यह बंद कर दिया है, app
से कनेक्शन 'के लिए:
अंत में, यहाँ समस्या प्रदर्शित करने के लिए एक कम testcase है एस lastWindowClosed
सिग्नल अंतर्निहित exit()
फ़ंक्शन होने के लिए कॉल का कारण बन जाएगा। यह तब होता है, जबकि code
मॉड्यूल input()
के लिए एक कॉल sys.stdin
से पढ़ने के लिए क्रियान्वित किया जाता है। और यहां, जब मैं खिड़की बंद करता हूं, टर्मिनल में टाइपिंग बाद में किसी भी प्रकार के वर्ण नहीं दिखाता है।
मैं मुख्य रूप से पायथन 3 का उपयोग कर रहा हूं, और वास्तविक ऐप पायथन 3-विशिष्ट कोड का उपयोग करता है, लेकिन मैंने पाइथन 2.7 में टेस्टकेस भी कोशिश की है और यह वही समस्या दिखाती है।
मैं Win7 64 बिट python26 में समस्या को पुन: नहीं कर सकते हैं: कुछ शिकार और सिर खरोंच के बाद मुझे पता लगा कि बाहर निकलने के
exit()
विधि के लिए एक संदर्भ तो मैंexiting()
बनाया है और उसमें एक संदर्भ से पारित कर दिया गया था। अगर मैं क्यूटी फ्रेम बंद करता हूं तो कंसोल फिर से सामान्य प्रॉम्प्ट लाता है और मैं उस पर टेक्स्ट दर्ज कर सकता हूं। – joaquinमुझे यह उल्लेख करना चाहिए था कि मैं इसे लिनक्स पर चला रहा हूं (मैं इसका उल्लेख करने के लिए संपादित करूंगा)। प्लेटफार्मों के बीच टर्मिनल व्यवहार शायद काफी अलग है। जांच के लिए धन्यवाद, यद्यपि! – Sho