2016-09-05 6 views
0

私はOSX端末(bash v.3.2.57、Yosmite)のansiの色で遊んでいます。端末内に奇妙な色合いがあります

ターミナルウィンドウをいっぱいにすると(バックグラウンドがスクロールするときなど)、バックグラウンドカラーの動作に問題があります。

背景色が右側の空白を埋める一方で、ラインを「スキップ」します(写真参照)。出力がウインドウをスクロールさせるまでは、私が望むように動作します。 "clear"コマンドを使用すると、出力がターミナルウィンドウを再びいっぱいにするまで、出力は正常に表示されます。

以下のコードは、さまざまな色の組み合わせを取得していただけです(この問題では少し切り詰めました)。

私は、出力が最初に機能するので、Pythonよりもむしろ責任があると感じています。誰もこの行動を説明できますか?乾杯。

#coloured text in terminal 
#ANSI escape sequences 

std_txt = '\033[0m' 

print('colour test' +'\n') 
print('   X in 033[0;Xm') 
for x in range(30,35): 

    print ''.join(["\033[0;",str(x), 'm']) + 'test' +'\t' + str(x) 

print std_txt +'\n' + ('end') 

print('colour test 2' +'\n') 
print('   X in 033[0;30;Xm') 
for x in range(40,45): 

    print ''.join(["\033[0;30;",str(x), 'm']) + 'test' +'\t' + str(x) 

print std_txt +'\n' + ('end') 

enter image description here

PS:私は、ターミナルウィンドウを埋めるか、スクロールして何を意味。 ターミナルウィンドウが80x24の場合は、24行を使用し、25を超える場合はスクロールします。申し訳ありませんが、私は問題でこれを説明することが難しいと感じました。

+1

あなたは 'newline'問題を持っているように見えます。各行のテキストが、スクロール後の次の行にテキストの後の行の残りの部分を印刷させた後、改行/改行が現れます。私はPythonで書いていないので、改行を 'print'にどのように渡しているかを見直す方法があるかどうかを示唆する以外には、あまり助けになることはできません。 ''終わり ''、 ''\ n'''(dunno、上のコードを見れば分かります)でなければなりません。 –

+0

そうですね、スクロール後に何か変わってしまうのは奇妙です。エリックの提案は、反復ごとにそれをリセットすることでした。 – der0keks

答えて

1

問題は、改行の前に色をリセットしていないため、端末が役立つようにすることです。

変更

print ''.join(["\033[0;30;",str(x), 'm']) + 'test' +'\t' + str(x) 

へ:

print ''.join(["\033[0;30;",str(x), 'm']) + 'test' +'\t' + str(x) + std_txt 
+0

ありがとうエリック、その調整は私が望むようにコードを作った! – der0keks

関連する問題