2014-04-24 12 views
5

Próbuję uzyskać tekst wyświetlany jako pogrubiony, lub w kolorach, lub ewentualnie kursywą, w qtconsole.drukowanie pogrubione, kolorowe, itp., Tekst w ipython qtconsole

Znalazłem ten link: How do I print bold text in Python? i użyłem pierwszej i drugiej odpowiedzi, ale w qtconsole działa tylko opcja podkreślania.

Staram:

print '\033[1m' + 'Hello World!' + '\033[0m'

a otrzymasz:

Hello World!

(Brak pogrubienie). Kolory też nie działają. Ale:

print '\033[4m' + 'Hello World!' + '\033[0m'

a otrzymasz:

Hello World!

podkreśloną.

Jest to tylko w qtconsole. Uruchamiając ipython właśnie w terminalu, działa w ten sposób, aby zrobić pogrubioną czcionkę i kolor.

Są inne opcje sugerowane w tym łączu i inne, Print in terminal with colors using Python?, połączone z nim, ale wszystkie wydają się bardziej skomplikowane, i używać bardziej skomplikowanych pakietów, niż wydaje się konieczne dla tego, co chcę zrobić, co jest po prostu dostać qtconsole do wyświetlania jak zwykły terminal.

Czy ktoś wie, co się dzieje? Czy to po prostu ograniczenie qtconsole?

Odpowiedz

6

Są to znaki specjalne ANSI, specjalne sekwencje znaków, które kończą proces przełączania stylów czcionek. Konsola Qt interpretuje niektóre z nich, ale nie wszystkie, które robią poważne terminale. Sekwencja ta działa drukowanie w kolorze czerwonym, na przykład:

print('\x1b[1;31m'+'Hello world'+'\x1b[0m') 

Jednakże, jeśli próbujesz pisać przekrój Application Platform, należy pamiętać, że w wierszu polecenia systemu Windows nie obsługuje te kody. Niektóre bardziej złożone pakiety mogą je przetwarzać w celu uzyskania podobnych efektów w systemie Windows.

Konsola Qt może również wyświetlać prosty HTML, takich jak to:

from IPython.display import HTML 
HTML("<i>Italic text</i>") 

Ale oczywiście, HTML nie działa w zwykłych terminalach.

1

Jeśli masz na myśli tekst ciała notebooka ipython (przecen), można umieścić 2 znaki podkreślają bezpośrednio przed i po tekście, aby go BOLD:

__BOLD TEXT__ =>BOLD TEKST

jeśli umieścisz odwrotny ukośnik przed, że będzie przeciwdziałał:

\__BOLD TEXT__ => __BOLD TEXT__

+0

Wymaga komórkę markdown. Pytanie dotyczyło użycia komórek kodu. – Charles

0

kilka innych sposobów, które możesz modyfikować wokół (próbowałem w ipython Notebook, nie wiem o innych) ..

**BOLD TEXT** 

Przede będzie produkować pogrubiony tekst: pogrubioną czcionką

*__BOLD TEXT__* 

będzie produkować i śmiały tekst kursywą: BOLD tEKST

+2

Działa tylko w komórce nacisku. Nie można uzyskać pracy po wydruku ("** Tekst **") –

4

W Jupyter notebooki, jeden czysty sposobem rozwiązania tego problemu jest usin g Przecena:

from IPython.display import Markdown, display 
def printmd(string): 
    display(Markdown(string)) 

A potem zrobić coś takiego:

printmd("**bold text**") 

oczywiście, to jest dobre dla pogrubienie, kursywa, itd., ale sam Przecena nie implementuje kolor. Jednak można umieścić html w promocji cenowych, a coś takiego:

printmd("<span style='color:red'>Red text</span>") 

Można też owinąć to w printmd funkcję:

def printmd(string, color=None): 
    colorstr = "<span style='color:{}'>{}</span>".format(color, string) 
    display(Markdown(colorstr)) 

a następnie wykonaj fajnych rzeczy jak

printmd("**bold and blue**", color="blue") 

Dla kolorów można również użyć notacji szesnastkowej (np. color = "#00FF00" dla zieleni)

celu wyjaśnienia, choć używamy przecen, jest to kod komórkowy: można robić takie rzeczy jak:

for c in ('green', 'blue', 'red', 'yellow'): 
    printmd("Writing in {}".format(c), color=c) 

oczywiście wadą tej metody jest opieranie się na bycie w notebooku Jupyter.

0

Chciałbym uzupełnić poprzednią niekompletną odpowiedź. O wiele bardziej skomplikowane i zabawne rzeczy można zrobić bez importowania dodatkowych pakietów. na przykład

print('\x1b[1;03;31;46m'+'Hello'+ '\x1b[0;4;30;42m' + ' world' '\x1b[0m') 

tj.:

Otwórz za pomocą:

'\x1b[XX;YY;ZZm' 

blisko z:

'\x1b[0m' 

Gdzie XX, YY i ZZ są liczbami od: https://en.wikipedia.org/wiki/ANSI_escape_code

Należy zauważyć, że jest to bardzo dużo zależnie od tego, co używasz jako konsoli, aby zobaczyć, co działa.

Praca dla mnie są kombinacje następujących:

Tekst stylizacji

  • 1 Zwiększona intensywność (działa na podświetleniem i tekstu jednocześnie w moim przypadku)
  • 3 Itallic
  • 4 Podkreśl

tekstowe kolory

  • 30 Czarny tekst
  • 31 Dark Red tekst
  • 32 Dark Green tekst
  • 33 Czerwony tekst
  • 34 Ciemnoniebieski tekst
  • 35 Purpurowy tekst
  • 36 Niebieski tekst
  • 37 Szary tekst

jasny kolor tekstu

  • 1; 30 Szary tekst (Jasne czarne)
  • 1; 31 pomarańczowy tekstowych (Jasne czerwony)
  • 1; 32 Jasne zielono
  • 1 ; 33 Jasnożółty tekst
  • 1; 34 Jasny niebieski tekst
  • 1; 35 Jasny fioletowy tekst
  • 1; 36 jasny cyjan tekst
  • 1; 37 białym ( jasny szary)

kolory tła (tjpasemka)

  • 40 czarne podświetlane
  • 41 Dark Red podkreślają
  • 42 Dark Green podkreślić
  • 43 Red kulminacyjnym
  • 44 Ciemnoniebieski kulminacyjnym
  • 45 Purpurowy kulminacyjnym
  • 46 Niebieski zaznacz
  • 47 Podkreślenie szarości

Należy pamiętać, że 1; 42 itd. Działa również podobnie

Testowane na Windows 7, Python 3.6, konsola ipython w Spyder 3.2.3 to działa na mnie

Powiązane problemy