2016-11-13 8 views
0

これはで、の重複はclear terminal in pythonですが、それほどではありません。Pythonのクリアターミナル(および履歴!)

この質問には:Pythonスクリプトから端末の画面をクリアするための標準の「電池が付属していますか?」というメソッドがありますか、または私はcurses(ライブラリではなく単語)に移動しなければなりませんか?

あなたの端末にclearと入力すると、すべての応答が表示されます。画面上のすべてが、最上部の空のコマンドラインを除いて消えます。しかし、あなたが望むならば、あなたは以前に何をしていたかを見るためにスクロールアップすることができます。

私はこれを行う方法を探していますが、ユーザーがスクロールアップを許可しないようにしています。これは、macOS上のcommand+Kと同じです。

このアプリケーションはマルチプレイヤーカードゲームであり、プレーヤーが別のプレイヤーの手を見るためにスクロールアップできないようにしたいと考えています。

答えて

4

あなたは、端末を再初期化し、効果にclearに似た何かをするだけでなく、スクロール履歴をクリアします端末にresetコマンドを送信するために標準ライブラリsubprocessモジュールからsubprocess.call()を使用することができます。

import subprocess 
subprocess.call('reset') 

代わりに、私は一人でresetであなたはわずかな遅延を経験するのに対し、あなたは、すぐにターミナルをクリアするであろう、代わりにコマンドtput resetを使用することができ、this answerから学びました。これは、次のようにもsubprocess.call()で呼び出すことができます。

resetコマンドの詳細については
subprocess.call(['tput', 'reset']) 

は、実行します。subprocessモジュールの詳細情報については、the documentationを参照してください

$ man reset 

私はUbuntuでこれらの両方をテストしましたが、うまくいけばOSX/macOSでもうまくいきます。そうでない場合は、おそらくとthis solutionを組み合わせて使用​​することができますが、それをテストすることはできません。

2

Pythonにはcursesモジュールが付属しています。これは、基本的に、テキスト画面上に一種のGUIを実装することを可能にします。プレイヤーは意図的にスクロールテキストウィンドウを実装していない限り、以前の出力にスクロールすることはできません。端末のスクロールバック機能はcursesアプリケーションでは何もしません。スクリーンから実際にスクロールしているものは何もないので、代わりに上書きされます。

関連する問題