2017-10-14 38 views
1

我是新來的詛咒圖書館,我想着色stdin,但尚未完成。我寫了下面的代碼,但他們不工作,因爲我希望,任何人都可以幫助我展示如何着色標準輸入?如何在輸入時用curses着色單詞?

#!/usr/bin/env python3 
# -*- coding: utf-8 -*- 

import curses 

stdscr = curses.initscr() 
curses.start_color() 
curses.init_pair(1, curses.COLOR_RED, curses.COLOR_BLACK) 
stdscr.nodelay(1) 

q = 1 
x = set() 

while q != ord("q"): 
    if len(x) == 3: 
     stdscr.addstr(0,0, "def", curses.color_pair(1)) 
    if q == ord("d"): 
     x.add("d") 
    elif q == ord("e"): 
     x.add("e") 
    elif q == ord("f"): 
     x.add("f") 
    q = stdscr.getch() 

stdscr.getch() 
curses.endwin() 
+0

老實說,我更喜歡發展與邏輯'colorama' – pstatix

+0

你有沒有彩色的關鍵字或功能,以不同的顏色比其他彩色光標準輸入文本? –

+0

你的問題是關於着色「stdin」不是嗎? – pstatix

回答

1

您的問題似乎是屏幕更新。這個版本放x集後更新到了最新:

#!/usr/bin/env python3 
# -*- coding: utf-8 -*- 

import curses 

stdscr = curses.initscr() 
curses.start_color() 
curses.init_pair(1, curses.COLOR_RED, curses.COLOR_BLACK) 
curses.raw() 
curses.noecho() 

q = -1 
x = set() 

while q != ord("q"): 
    if q >= 0: 
     stdscr.addstr(chr(q)) 
    if q == ord("d"): 
     x.add("d") 
    elif q == ord("e"): 
     x.add("e") 
    elif q == ord("f"): 
     x.add("f") 
    else: 
     x = set() 
    if len(x) == 3: 
     stdscr.addstr("\b\b\bdef", curses.color_pair(1)) 
     x = set() 
    q = stdscr.getch() 

stdscr.getch() 
curses.endwin() 
+0

謝謝,問題由y = 0和x = 0定義引起。但是在你的代碼中,這些字符沒有光標位置。在另一個例子中,我試圖根據stdscr.getmaxyx()更改y和x值。當x等於stdscr.getmaxyx() - 1時,y變成y + = 1,x變成x = 0。但是使用你的代碼,不需要定義字符的光標位置在換行符上。謝謝。 –

+0

其實我的代碼有很多問題,它不僅僅是關於x和y。它只在屏幕上增加str,如果len(x)== 3在0,0位置,這是不可能將3 chr放入1個單元格的。 :) –