2017-03-02 62 views
1

我在Python中遇到了curses库的问题。请看下面的代码:Python打印在调用curses包装后搞砸了

def main(stdscr): 

    print('Hello World!!') 
    create_screen() 
    curses.endwin() 

if __name__ == "__main__": 
    curses.wrapper(main) 

问题是由“打印”功能,每打印文本甚至称“create_screen()”功能,通过启动画面“curses.initscr()”

+1

然后不要打印任何东西......你使用curses是有原因的。 –

+0

你想达到什么目的?为什么你不能使用'curses'来进行这些“普通”调用来“打印”? –

+0

@AnttiHaapala我需要在通过curses调用主程序屏幕之前打印一些东西,如横幅和用户输入 – Lonesome

回答

1
之前搞砸

通常在程序使用curses之前和之后,您可以使用printinput。另外,您不必将所有代码都写入main,也不必将main函数也传递给cursesmain只是一个像其他任何功能。看看这个简单的例子:

import curses, time 

def incurses(stdscr): 
    stdscr.addstr(0, 0, "Exiting in ") 
    stdscr.addstr(2, 0, "Hello World from Curses!") 
    for i in range(5, -1, -1): 
     stdscr.addstr(0, 11, str(i)) 
     stdscr.refresh() 
     time.sleep(1) 
    curses.endwin() 

def main(): 
    print('Hello World!!') 
    choice = input("Start Curses Program? ") 
    if choice == "yes": 
     curses.wrapper(incurses) 
    print("After curses") 

if __name__ == "__main__": 
    main() 

此打印,并要求用户输入,则显示了一个诅咒屏幕,然后返回到“正常”的打印模式。

+0

非常感谢@tobias_k,这是过度思考的问题:) – Lonesome

+0

'curses.endwin()'不是必需的,因为'curses.wrapper'自动完成。 https://docs.python.org/3/howto/curses.html#starting-and-ending-a-curses-application – Dineshs91