簡體   English   中英

以相同的詛咒多次打印-python

[英]print in same curses multiple times - python

我正在通過詛咒展示一些實時統計數據。 我是這個庫的新手,所以我按照這個例子來實現我所需要的。

我寫了這個小版本,總結了我的問題:

import time
import curses

def draw_menu(stdscr):
    global data
    # Turn cursor off
    curses.curs_set(False)

    # Rendering text
    stdscr.addstr(2, 5, "Help me please")
    stdscr.addstr(5, 5, data)
    # Refresh the screen
    stdscr.refresh()
    time.sleep(3)

data = 'some initial value'
for i in xrange(2):
    curses.wrapper(draw_menu)
    # Do some stuff to update values shown in the menu
    data = 'updated value {}'.format(i)
    time.sleep(3)

最初調用draw_menu之后,我需要更新菜單上顯示的值。 當更新運行時(在本示例中,我使用time.sleep),值從窗口中刪除,並返回“正常終端模式”,我不知道為什么。

我想全天候更新數據,並顯示此“請幫助我”消息和數據。

我認為我可以使用線程解決此問題,但是由於完整的代碼要復雜得多,因此我想避免使用線程。

我該如何解決?

您的示例應將循環放入對curses.wrapper的調用中,例如,類似

import curses

def draw_menu(stdscr):
    global data
    # Turn cursor off
    curses.curs_set(False)

    # Rendering text
    stdscr.addstr(2, 5, "Help me please")
    stdscr.addstr(5, 5, data)
    # Refresh the screen
    stdscr.refresh()
    curses.napms(3000)

def draw_menu_loop(w):
    global data
    data = 'some initial value'
    for i in xrange(2):
        draw_menu(w)
        # Do some stuff to update values shown in the menu
        data = 'updated value {}'.format(i)
    curses.napms(3000)

curses.wrapper(draw_menu_loop)

順便說一句(實際上應該是一個新問題),您的示例使用了time.sleep ,它會干擾屏幕的及時更新。 使用curses.napms ,它沒有這個缺點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM