Как отключить мигающий курсор в окне команд? - PullRequest
8 голосов
/ 03 марта 2011

У меня есть скрипт Python, который отправляет вывод в командное окно DOS (я использую Windows 7) с помощью функции print (), но я бы хотел предотвратить (или скрыть) мигание курсора в следующей доступной позиции вывода,Кто-нибудь знает, как я могу это сделать?Я просмотрел список команд DOS, но не могу найти ничего подходящего.

Любая помощь будет оценена.Alan

Ответы [ 3 ]

15 голосов
/ 05 мая 2012

Я писал кроссплатформенную библиотеку цветов для использования вместе с Colorama (http://pypi.python.org/pypi/colorama) для Python 3. Чтобы полностью скрыть курсор на окнах или Linux:

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()

Выше приведеновыборочное копирование и вставка. Отсюда вы в значительной степени сможете делать то, что вы хотите. Предполагая, что я не испортил копию и вставил, это было проверено в Windows Vista и Linux / Konsole.

5 голосов
/ 26 января 2019

Для тех, кто видит это в 2019 году, есть модуль Python3, называемый «курсор», который в основном просто имеет методы скрытия и показа. Установите курсор, затем просто используйте:

import cursor
cursor.hide()

И все готово!

3 голосов
/ 03 марта 2011

Насколько можно судить, нет порта Windows для модуля curses, который, скорее всего, вам нужен.Самое подходящее для удовлетворения ваших потребностей - это Консольный модуль , написанный Фредриком Лундом на effbot.org.К сожалению, модуль доступен только для версий, предшествующих Python 3, который, по-видимому, используется вами.

В Python 2.6 / WinXP следующий код открывает окно консоли, делает курсор невидимым, печатает 'Привет, мир!'а затем закрывает окно консоли через две секунды:

import Console
import time

c = Console.getconsole()
c.cursor(0)
print 'Hello, world!'
time.sleep(2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...