2011-03-02 11 views
5

मेरे पास एक पायथन स्क्रिप्ट है जो प्रिंट() फ़ंक्शन का उपयोग करके एक डॉस कमांड विंडो (मैं विंडोज 7 का उपयोग कर रहा हूं) में आउटपुट भेजता हूं, लेकिन मैं कर्सर को अगली उपलब्ध आउटपुट स्थिति पर ब्लिंकिंग से रोकना (या छुपा) करना चाहता हूं। क्या किसी को कोई विचार है कि मैं यह कैसे कर सकता हूं? मैंने डॉस कमांड की एक सूची देखी है लेकिन मुझे कुछ भी उपयुक्त नहीं मिल रहा है।कमांड विंडो में ब्लिंकिंग कर्सर को कैसे बंद करें?

किसी भी मदद की सराहना की जाएगी। एलन

+0

जहां तक ​​मैं निर्धारित कर सकता हूं, आप मानक डॉस कमांड विंडो का उपयोग करके ऐसा नहीं कर सकते हैं। आपको अपनी आउटपुट विंडो प्रदान करना होगा, उदा। टीकेइंटर या WxPython का उपयोग कर। – kindall

उत्तर

3

जहां तक ​​कोई भी बता सकता है, शाप मॉड्यूल के लिए कोई विंडोज पोर्ट नहीं है, जो आपको सबसे अधिक संभावना है। आपकी जरूरतों को पूरा करने के लिए सबसे नज़दीकी बात यह है कि Console module फ्रेड्रिक लुंड द्वारा effbot.org पर लिखा गया है। दुर्भाग्यवश, मॉड्यूल केवल पायथन 3 से पहले संस्करणों के लिए उपलब्ध है, जो आप उपयोग करते हैं।

पायथन 2.6/विनएक्सपी में, निम्न कोड एक कंसोल विंडो खोलता है, कर्सर अदृश्य बनाता है, प्रिंट करता है 'हैलो, दुनिया!' और फिर दो सेकंड के बाद कंसोल विंडो बंद कर देता है:

import Console 
import time 

c = Console.getconsole() 
c.cursor(0) 
print 'Hello, world!' 
time.sleep(2) 
+0

उत्तर के लिए धन्यवाद। आप सही हैं - मैं पाइथन 3.1 का उपयोग कर रहा हूं, इसलिए ऐसा लगता है कि मैं थोड़ी देर के लिए कर्सर के साथ फंस गया हूं :-(सम्मान। –

9

मैं अजगर के लिए Colorama (http://pypi.python.org/pypi/colorama) के साथ संयोजन के रूप में उपयोग करने के लिए एक पार मंच रंग पुस्तकालय लेखन किया गया है

import sys 
import os 

if os.name == 'nt': 
    import msvcrt 
    import ctypes 

    class _CursorInfo(ctypes.Structure): 
     _fields_ = [("size", ctypes.c_int), 
        ("visible", ctypes.c_byte)] 

def hide_cursor(): 
    if os.name == 'nt': 
     ci = _CursorInfo() 
     handle = ctypes.windll.kernel32.GetStdHandle(-11) 
     ctypes.windll.kernel32.GetConsoleCursorInfo(handle, ctypes.byref(ci)) 
     ci.visible = False 
     ctypes.windll.kernel32.SetConsoleCursorInfo(handle, ctypes.byref(ci)) 
    elif os.name == 'posix': 
     sys.stdout.write("\033[?25l") 
     sys.stdout.flush() 

def show_cursor(): 
    if os.name == 'nt': 
     ci = _CursorInfo() 
     handle = ctypes.windll.kernel32.GetStdHandle(-11) 
     ctypes.windll.kernel32.GetConsoleCursorInfo(handle, ctypes.byref(ci)) 
     ci.visible = True 
     ctypes.windll.kernel32.SetConsoleCursorInfo(handle, ctypes.byref(ci)) 
    elif os.name == 'posix': 
     sys.stdout.write("\033[?25h") 
     sys.stdout.flush() 

ऊपर एक चयनात्मक प्रतिलिपि & पेस्ट है: 3. पूरी तरह से विंडोज या लिनक्स पर कर्सर को छिपाने के लिए। यहां से आपको जो भी चाहिए वो करने में सक्षम होना चाहिए। मान लीजिए कि मैंने कॉपी और पेस्ट को गड़बड़ नहीं किया था, इसका परीक्षण विंडोज विस्टा और लिनक्स/कंसोल के तहत किया गया था।

संबंधित मुद्दे