2017-08-06 54 views
0

例如,我有字符串"Colour selected is red"如何僅使「紅色」一詞變成紅色?如何使用python curses將顏色添加到特定的字符串?

這是我用來嘗試和實現這一點。

import curses 

curses.start_color() 
curses.init_pair(1, curses.COLOR_RED, curses.COLOR_BLACK) 
win = curses.newwin(5 + window_height, window_width, 2, 4) 

win.addstr(position + 2, 5, "Colour selected is " + "Red", curses.color_pair(1)) 

它是更大的項目的一部分,所以一些信息可能會丟失。但它不起作用。

+0

你試過了什麼代碼?你能給我們一個摘錄嗎? – SeeDerekEngineer

+0

添加好的片段 – answerSeeker

+0

我嘗試使用termcolor python庫將顏色更改爲紅色,但會發生以下情況:'^ [[31mred^[[0m' – answerSeeker

回答

1

這工作:

import curses 

curses.initscr(); 

window_height = curses.LINES - 2 
window_width = curses.COLS - 2 
position = 3 

curses.start_color() 
curses.init_pair(1, curses.COLOR_RED, curses.COLOR_BLACK) 
win = curses.newwin(5 + window_height, window_width, 2, 4) 

win.addstr(position + 2, 5, "Colour selected is " + "Red", curses.color_pair(1)) 

win.getch() 

如果你減少了問題的一個簡單,完整的程序,你可能會看到你的原始程序的問題。

繼續留言:在curses中,addstr函數將整個字符串參數的屬性(包括顏色)應用於該參數。如果你想讓字符串的不同部分具有不同的屬性,你將不得不分別調用addstr,每個屬性應用於原始字符串的一部分。類似這樣的:

win.addstr(position + 2, 5, "Colour selected is ") 
win.addstr("Red", curses.color_pair(1)) 
+0

這是預期的行爲:addstr具有3個可選參數(位置對和屬性)。 *屬性*適用於* string *參數。如果你想要2個字符串,你必須對addstr進行2次調用。 –

相關問題