print() 関数を使用して DOS コマンド ウィンドウ (Windows 7 を使用しています) に出力を送信する Python スクリプトがありますが、次の使用可能な出力位置でカーソルが点滅しないようにしたい (または非表示にしたい)。どうすればこれを行うことができるか考えている人はいますか? DOS コマンドのリストを調べましたが、適切なものが見つかりません。
どんな助けでも大歓迎です。アラン
print() 関数を使用して DOS コマンド ウィンドウ (Windows 7 を使用しています) に出力を送信する Python スクリプトがありますが、次の使用可能な出力位置でカーソルが点滅しないようにしたい (または非表示にしたい)。どうすればこれを行うことができるか考えている人はいますか? DOS コマンドのリストを調べましたが、適切なものが見つかりません。
どんな助けでも大歓迎です。アラン
python3のcoloramaと組み合わせて使用するクロスプラットフォームのカラーライブラリを作成しています。Windowsまたは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()
上記は選択的なコピー&ペーストです。ここから、あなたはほとんどあなたが望むことをすることができるはずです。コピーアンドペーストを台無しにしないと仮定すると、これはWindowsVistaおよびLinux/Konsoleでテストされました。
知る限り、curses モジュール用の Windows ポートはありません。これはおそらく必要なものです。ニーズに最も近いものは、effbot.org で Fredrik Lundh によって作成されたConsole モジュールです。残念ながら、このモジュールは Python 3 より前のバージョンでしか利用できません。これはあなたが使用しているようです。
Python 2.6/WinXP では、次のコードはコンソール ウィンドウを開き、カーソルを非表示にし、'Hello, world!' を出力します。2 秒後にコンソール ウィンドウを閉じます。
import Console
import time
c = Console.getconsole()
c.cursor(0)
print 'Hello, world!'
time.sleep(2)