2017-07-19 66 views
0

我跟着this解決方案爲了在終端上對矩陣進行顏色格式化。但是,當我打印它時,爲了分隔矩陣的行而添加的換行符未被格式化。我預計整個終端會變成背景白色和黑色文本(對應於矩陣高度的區域),但顯然不是。爲什麼?爲什麼換行符不是顏色格式的?

這是代碼:

m = np.full((4,4),'0',dtype=np.str_) 
print('\x1b[0;30;47m\n'+'\n\n'.join(' '+' '.join(line) for line in m)+'\n\x1b[0m') 

PROOFenter image description here 我使用的默認的ubuntu 14.04終端

解決 最後,我簡單地應用於彩色格式到每個字符串由一個新行分隔。

+0

你能提供的證據表明,這顯然是不正常工作? –

+0

我只是在我的控制檯中試過了,我可以確認它並不像他預期的那樣工作。呃,我剛剛說過之後再次嘗試,並且它工作正常....然後我再次嘗試,它不再工作。 Jeez,這個評論是無用的。 –

+0

你在用什麼終端? – MattR

回答

1

我認爲這種現象的原因是,大多數終端僅適用背景色被實際打印的字符,但\n\n產生含沒有字符線(而不是一條線滿的空間)。至少這就是我手頭上的所有終端所做的。試試這個:

print('\x1b[0;30;47m\n' + '\n'.join([' '*i for i in range(10)]) + '\n\x1b[0m') 

,你可能會看到一個階梯狀的圖案:只在屏幕更新stair-like pattern

1

單元格背景着色。當你的程序打印換行符時,它「僅」使光標位置向下移動(不更新單元格)。

不過,如果您修改程序打印更多的線,即下降到屏幕的底部,它會做不同的事情:

  • 光標不能再向下移動。
  • 屏幕「索引」(向上滾動一行),並且
  • 新曝光的行將被着色。

這是因爲終端從xterm和Linux控制檯複製行爲。實際上,終端的幾個功能在擦除屏幕部分時組合起來以形成其行爲。

延伸閱讀:

相關問題