2012-06-19 154 views
9

Mới cho cả Python và Stackoverflow, tôi muốn được trợ giúp một chút. Tôi muốn in màu bằng Python, và đã google nhưng với chút may mắn :(Tôi đã bối rối mỗi lần và không ai có thể làm việc. Đây là mã tôi đã gõ.Làm thế nào để in màu/màu trong python?

answer = input ("Wanna go explore? OPTIONS : Yes or No") 
if answer == "no": 
    print("Awww, come on, don't be like that, lets go!") 
elif answer == "yes": 
    print ("Great! Lets go!") 
else: 
    print("Whats that? I couldn't hear you!") 

Bây giờ, tôi muốn có OPTIONS màu Xanh lục và Có màu xanh lam và Không có màu đỏ. Làm thế nào để đạt được điều này?

+0

Mã của bạn là mất tích thụt đầu dòng và là cú pháp hợp lệ. Bạn nên khắc phục điều đó trước. Ngoài ra, tôi không hiểu yêu cầu của bạn. Những gì đầu vào sẽ dẫn đến những gì đầu ra? – phihag

+0

Xin lỗi. Tôi đã không sao chép và dán mã trực tiếp, bởi vì bạn không thể làm điều đó trong IDLE, nhưng nó hoạt động tốt trong IDLE. Bây giờ, tôi muốn làm cho tùy chọn màu xanh lá cây, có màu xanh và không có màu đỏ. Bây giờ, tôi mới để python và không có ý tưởng làm thế nào để làm điều này. Bất kỳ ý tưởng? Ngoài ra, tôi apoligize nếu tôi đã không cung cấp cho bạn câu trả lời bạn đã có thể thích. Tôi sẽ thành thật, tôi không hoàn toàn hiểu ý của bạn tại 'Đầu ra nào sẽ dẫn đến đầu ra' –

+0

Tôi đã sửa cú pháp mã của bạn. – SomeKittens

Trả lời

4

Kiểm tra mô-đun curses.Điều này sẽ thay thế các định dạng và thuộc tính văn bản trên màn hình của bạn

3

Nếu bạn chỉ muốn thực sự đơn giản và st cách raightforward in ansi màu sắc trong thiết bị đầu cuối, bạn có thể kiểm tra ansicolor package module:

Cài đặt qua pip

$ pip install ansicolors 

đoạn Cách sử dụng

from colors import red, green, blue 
print red('This is red') 
print green('This is green') 
print blue('This is blue') 

from colors import color 
for i in range(256): 
    print color('Color #%d' % i, fg=i) 

Lưu ý về pip

pip là trình quản lý gói python. Nếu bạn không có pip cài đặt, bạn có thể cài đặt nó với easy_install pip

Nếu bạn sau đó tìm thấy bạn không có easy_install, sau đó tải này: http://peak.telecommunity.com/dist/ez_setup.py và làm:

python ez_setup.py 
easy_install pip 

Màu sắc cho các cửa sổ lệnh shell

Màu ansi ở trên sẽ không hoạt động đối với bạn trong trình bao lệnh cửa sổ. Hãy thử xem số điện thoại này activestate code snippet

+0

Sẽ kiểm tra điều này và quay lại với kết quả của tôi. Cảm ơn rất nhiều! –

+0

Argh. Không làm việc. tôi đã thử cài đặt, bằng cách gõ $ pip cài đặt ansicolors có lẽ tôi cần phải cài đặt này 'pip' tôi chưa bao giờ nghe nói về pip trước: P –

+0

pip là người quản lý gói python. Nếu bạn chưa có, hãy thử 'easy_install pip' trước – jdi

0

Nếu bạn muốn in màu đầu cuối, bạn phải sử dụng mã thoát cho thiết bị đầu cuối bạn đang sử dụng. Đối với các hệ thống unix/linux, bạn có thể sử dụng mô-đun curses - hoặc chỉ sử dụng trực tiếp bash color codes như là một phần của chuỗi đầu ra của mình. Có vẻ như không phải là cách dễ dàng để thực hiện việc này trong các cửa sổ theo số this question.

+0

Vì vậy, tôi đã phải sử dụng Linux? Damnit.Tôi preffer cửa sổ: ((không nói linux là xấu) oh tốt –

+1

bạn có thể sử dụng [cygwin] (http://cygwin.com) mà về cơ bản cung cấp cho bạn một linux shell và các chương trình trên nền tảng windows Tôi muốn giới thiệu nó cho lập trình dưới cửa sổ anyways vì shell cmd chỉ là khủng khiếp so với bash – l4mpi

1

Nếu bạn đang sử dụng một thiết bị đầu cuối và/hoặc vỏ có hỗ trợ trình tự thoát ANSI, giống như sau nên làm việc:

print("Blah blah \033[0;32mthis part will be green\033[00m blah blah.") 
print("Blah blah \033[0;31mthis part will be red\033[00m blah blah.") 

tôi có thể xác nhận rằng nó làm việc trong bash trên Linux. Xem Wikipedia page on ANSI escape codes để biết thêm chi tiết, bao gồm bảng tổng hợp mô tả ảnh hưởng của các chuỗi/giá trị ký tự khác nhau. Tôi không ủng hộ điều này như một giải pháp kinh điển, nhưng nó có thể là đủ cho các mục đích của bạn.

6

Nếu bạn muốn in màu trong trình bao IDLE, không có câu trả lời nào khi sử dụng mã thoát ASCI sẽ giúp bạn vì nó không thực hiện tính năng này.

Có một hack cụ thể cho IDLE cho phép bạn ghi trực tiếp lên đối tượng PyShell và chỉ định các thẻ văn bản mà IDLE đã xác định như "STRING" sẽ xuất hiện dưới dạng màu xanh theo mặc định.

import sys 

try: 
    shell = sys.stdout.shell 
except AttributeError: 
    raise RuntimeError("you must run this program in IDLE") 

shell.write("Wanna go explore? ","KEYWORD") 
shell.write("OPTIONS","STRING") 
shell.write(" : ","KEYWORD") 
shell.write("Yes","DEFINITION") 
shell.write(" or ","KEYWORD") 
shell.write("No","COMMENT") 
answer = input() 

Khi chạy trong IDLE sẽ cho kết quả nhanh chóng này:

enter image description here

Dưới đây là danh sách tất cả các thẻ có giá trị sử dụng:

print("here are all the valid tags:\n") 

valid_tags = ('SYNC', 'stdin', 'BUILTIN', 'STRING', 'console', 'COMMENT', 'stdout', 
       'TODO','stderr', 'hit', 'DEFINITION', 'KEYWORD', 'ERROR', 'sel') 

for tag in valid_tags: 
    shell.write(tag+"\n",tag) 

Lưu ý rằng 'sel' là đặc biệt mà nó đại diện cho văn bản được chọn, vì vậy nó sẽ được bỏ chọn khi một cái gì đó khác được nhấp vào. Nó cũng có thể được sử dụng để bắt đầu một số văn bản được chọn để sao chép.

+0

Tôi có thể in chữ in đậm với nó không? –

+0

Điều này được giới hạn cho màu IDLE của văn bản, vì vậy theo như tôi biết nó chỉ có thể đưa vào bảng màu (không phải văn bản kích thước/đậm/font vv) thiết lập trong sở thích. –

0

Clint (C ommand L ine TRÊN terface T ools) là một thư viện tốt mà tôi đã sử dụng. Đó là một thư viện đa năng cho mọi thứ liên quan đến thiết bị đầu cuối. Có chức năng trong đó cho màu sắc, có/không nhắc nhở, quán bar tiến bộ vv

Sử dụng Clint cho ra màu trông như thế này:

>>> from clint.textui import colored, puts 
>>> puts(colored.red('red text')) 
red text 
Các vấn đề liên quan