2017-03-02 26 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