[英]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.