2014-04-24 40 views
5

Tôi đang cố gắng hiển thị văn bản để in đậm, hoặc màu, hoặc có thể in nghiêng, trong qtconsole của ipython.in đậm, màu, v.v., văn bản trong ipython qtconsole

Tôi tìm thấy liên kết này: How do I print bold text in Python? và sử dụng câu trả lời đầu tiên và thứ hai, nhưng trong qtconsole, chỉ có tùy chọn gạch dưới hoạt động.

tôi cố gắng:

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

Và nhận được:

Hello World!

(Không in đậm). Màu sắc không hoạt động. Nhưng:

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

Và nhận được:

Hello World!

Với gạch dưới.

Đây chỉ là trong qtconsole. Chạy ipython chỉ trong terminal, nó hoạt động để làm đậm nét và màu theo cách này. Có một số tùy chọn khác được đề xuất trong liên kết đó và một, Print in terminal with colors using Python?, được liên kết từ nó, nhưng tất cả đều phức tạp hơn và sử dụng các gói phức tạp hơn, có vẻ cần thiết cho những gì tôi muốn làm, qtconsole để hiển thị như thiết bị đầu cuối thông thường.

Có ai biết điều gì đang xảy ra không? Đây có phải chỉ là một hạn chế của qtconsole không?

Trả lời

6

Đó là các lối thoát ANSI, chuỗi ký tự đặc biệt mà các thiết bị đầu cuối xử lý để chuyển đổi kiểu phông chữ. Bàn điều khiển Qt diễn giải một số trong số chúng, nhưng không phải tất cả những thiết bị đầu cuối nghiêm trọng đều làm. chuỗi này hoạt động để in màu đỏ, ví dụ:

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

Tuy nhiên, nếu bạn đang cố gắng để viết một ứng dụng đa nền tảng, lưu ý rằng nhắc lệnh Windows không xử lý các mã. Một số gói phức tạp hơn có thể xử lý chúng để tạo ra các hiệu ứng tương tự trên Windows.

Các Qt console cũng có thể hiển thị HTML đơn giản, như thế này:

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

Nhưng tất nhiên, HTML không hoạt động trong thiết bị đầu cuối thông thường.

1

Nếu bạn có nghĩa là phần nội dung của máy tính xách tay ipython (markdowns), bạn có thể đặt 2 ký tự gạch dưới trực tiếp trước và sau khi văn bản của bạn để làm cho nó BOLD:

__BOLD TEXT__ =>BOLD TEXT

nếu bạn đặt một dấu chéo ngược trước đó, nó sẽ được làm mất tác dụng:

\__BOLD TEXT__ => __BOLD TEXT__

+0

Yêu cầu tế bào markdown. Câu hỏi là về việc sử dụng các ô mã. – Charles

0

ít nhiều cách bạn có thể tinh chỉnh xung quanh (tôi đã cố gắng trong ipython Máy tính xách tay, không chắc chắn về khác) ..

**BOLD TEXT** 

Trên sẽ sản xuất chữ in đậm: TEXT BOLD

*__BOLD TEXT__* 

sẽ sản xuất táo bạo và văn bản in nghiêng: tEXT BOLD

+2

Nó chỉ hoạt động trong ô đánh dấu. Bạn không thể làm cho nó hoạt động bằng cách in ('** Văn bản **') –

4

trong Jupyter Máy tính xách tay, một cách sạch sẽ giải quyết vấn đề này được usin g markdown:

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

Và sau đó làm một cái gì đó như:

printmd("**bold text**") 

Tất nhiên, điều này là rất tốt cho đậm, in nghiêng, vv, nhưng markdown bản thân không thực hiện màu sắc. Tuy nhiên, bạn có thể đặt html trong markdown của bạn, và nhận được một cái gì đó như thế này:

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

Bạn cũng có thể quấn này trong printmd chức năng:

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

Và sau đó làm những điều lý thú như

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

Đối với màu sắc, bạn cũng có thể sử dụng ký hiệu thập lục phân (ví dụ: color = "#00FF00" cho màu xanh lá cây)

Để làm rõ, mặc dù chúng tôi sử dụng markdown, đây là một đang di động: bạn có thể làm những việc như:

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

Tất nhiên, một nhược điểm của phương pháp này là sự phụ thuộc vào việc bên trong một máy tính xách tay Jupyter.

0

Tôi muốn để hoàn thành câu trả lời không đầy đủ trước. Cách thức phức tạp và thú vị hơn có thể được thực hiện mà không cần nhập các gói bổ sung. ví dụ.

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

tức là:

Open with:

'\x1b[XX;YY;ZZm' 

Đóng với:

'\x1b[0m' 

đâu XX, YY và ZZ là những con số từ: https://en.wikipedia.org/wiki/ANSI_escape_code

Cần lưu ý rằng nó là rất nhiều phụ thuộc vào những gì bạn sử dụng làm bàn điều khiển để xem những gì hiệu quả.

Làm việc đối với tôi là sự kết hợp các nội dung sau:

chữ phong cách

  • 1 Tăng cường độ (nó hoạt động trên nổi bật và văn bản đồng thời trong trường hợp của tôi)
  • 3 Itallic
  • 4 Gạch dưới

chữ màu

  • 30 Văn bản màu đen văn bản
  • 31 Dark Red văn bản
  • 32 Dark Green
  • 33 Red văn bản
  • 34 đậm dòng chữ màu xanh
  • 35 Tím văn bản
  • 36 Văn bản màu xanh
  • 37 Văn bản màu xám

màu Bright văn bản

  • 1; 30 Grey văn bản (Bright đen)
  • 1; 31 văn bản Orange (Bright đỏ)
  • 1; 32 Bright Chữ xanh lục
  • 1 ; 33 Văn bản màu vàng sáng
  • 1; 34 Văn bản màu xanh sáng
  • 1; 35 Văn bản màu tím sáng
  • 1; 36 Bright Cyan văn bản
  • 1; 37 Văn bản màu trắng (Bright xám)

nền màu (ví dụ:điểm nổi bật)

  • 40 Đen nổi bật
  • 41 Dark Red nổi bật
  • 42 Dark Green nhấn mạnh
  • 43 Red nổi bật
  • 44 tối màu xanh nổi bật
  • 45 màu tím nổi bật
  • 46 Xanh làm nổi bật
  • 47 Điểm nhấn màu xám

Lưu ý rằng 1; 42 vv cũng hoạt động tương tự

thử nghiệm trên Windows 7, python 3.6, IPython console, trong spyder 3.2.3 làm việc này cho tôi

Các vấn đề liên quan