2

最初に、私はこのライブラリを学習しているだけで、これを機能させようとしており、後の反復でクリーンアップすることを前置きさせてください。

つまり、私のコードはこのエラーをスローしています:

Traceback (most recent call last):
  File "cursesDemo1.py", line 30, in <module>
    box3 = maketextbox(1,40, 10,20,"foo",deco="underline",textColorpair=curses.color_pair (0),decoColorpair=curses.color_pair(1))
_curses.error: must call start_color() first

どこに電話する必要があるstart_color()のか​​ わかりません.Googleでこのエラーの例や修正方法を見つけることができないようです.

私はそれをどこにでも追加しようとしましたが、困惑しています。どこを見ればよいか、または例についてのガイダンスを教えてください。

ここに私の完全なコードがあります:

import curses 
import time

screen = curses.initscr()

def maketextbox(h,w,y,x,value="",deco=None,underlineChr=curses.ACS_HLINE,textColorpair=0,decoColorpair=0):
    nw = curses.newwin(h,w,y,x)
    txtbox = curses.textpad.Textbox(nw)
    if deco=="frame":
        screen.attron(decoColorpair)
        curses.textpad.rectangle(screen,y-1,x-1,y+h,x+w)
        screen.attroff(decoColorpair)
    elif deco=="underline":
         screen.hline(y+1,x,underlineChr,w,decoColorpair)

    nw.addstr(0,0,value,textColorpair)
    nw.attron(textColorpair)
    screen.refresh()
    return txtbox

 try:
    screen.border(0)

    box1 = curses.newwin(22, 50, 3, 5)
    box1.box()   

    box2 = curses.newwin(22, 50, 3, 65)
    box2.box()   

    box3 = maketextbox(1,40,  10,20,"foo",deco="underline",textColorpair=curses.color_pair    (0),decoColorpair=curses.color_pair(1))
    textInput = box3.edit()

    box1.addstr(2, 18, "Functions")
    box2.addstr(2, 18, "Processes")

    screen.refresh()
    box1.refresh()
    box2.refresh()
    box3.refresh()

    for i in range(19):
        toWrite = "Does this move run = %d" % i
        box1.addstr(8, 9, toWrite)
        box1.refresh()
        time.sleep(5)
        box2.addstr(8, 9, textInput)
    screen.getch()



finally:
    curses.endwin()
4

2 に答える 2

0

initscr を呼び出した直後に start_color を呼び出します。

いいえ:

if __name__ == "__main__":
    screen = curses.initscr()
    screen.start_color()
    ...
    screen.endwin()

Eric S. Raymond の "Writing Programs with ncurses" は、ライブラリの低レベルの画面管理部分の優れた一般的な入門書です。C を理解するために C を理解する必要はありません。ライブラリ関数はほとんど 1:1 ベースで対応する Python に直接マップされるためです。

http://invisible-island.net/ncurses/ncurses-intro.html

また、http: //tinyurl.com/lgkyggqというのは、人々が常に最初に尋ねるのは、スクロールを適切に実装する方法であり、その本のかなりの部分がこの主題を扱っているからです。

于 2013-12-02T11:09:13.763 に答える
0

私の場合(python 2.7)、このコードで問題が解決しました:

curses.start_color()
于 2018-04-21T17:48:59.543 に答える