2013-07-31 62 views
4

如果我想要在QtConsole或IPython Notebook中有一個對象的顏色表示,我只需要將_repr_html_方法添加到對象類。IPython終端外殼中對象的彩色表示

In [1]: class Test(object): 
      def __init__(self, x): 
       self.x = x 

      def _repr_html_(self): 
       return '''<span style="color: green"> 
         Test{<span style="color: red">%s</span>} 
         </span>''' % self.x 
In [2]: Test(33) 
Test{33} 

這會給我一個很好的顏色表示,其中Test{將是綠色,紅色33}綠色一次。

有沒有辦法在跨平臺的方式在IPython Shell的終端版本中做到這一點?

理想的情況下它的工作方式相同的模板爲prompt customization

In [1]: class Test(object): 
      def __init__(self, x): 
       self.x = x 

      def _repr_shell_(self): 
       return '{color.Green}Test{{color.Red}%s{color.Green}}' % self.x 

如果沒有,我可以以某種方式導入和使用IPython的內部的跨平臺着色系統在我自己的控制檯應用程序?我看着IPython的代碼庫,但我還沒有發現用它:(

回答

2

可以使用TermColors從IPython的任何直接的方式
一個最小的例子是:

from IPython.utils.coloransi import TermColors as color 
class Test(object): 
    def __init__(self, x): 
     self.x = x 
    def __repr__(self): 
     return '{0}Test{{{1}{2}{0}}}'.format(color.Green, color.Red, self.x) 
+0

你知道任何我可以在IPython環境之外使用TermColors的方法?在POSIX系統上,它可以正常工作,但是在Windows上,它只是打印出POSIX轉義碼 –

+0

您可以檢查* colorama *,查看這些SO問題:http:// stackoverflow .com/q/12492810/2870069和http://stackoverflow.com/q/8358533/2870069 – Jakob

+0

是的,我知道colorama,但由於IPython已經做到了,我想避免額外的依賴想法:) –