亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python ncurses:直到第一次刷新才顯示屏幕

Python ncurses:直到第一次刷新才顯示屏幕

元芳怎么了 2021-03-09 17:17:08
下面的代碼使您可以使用箭頭鍵“?!痹谄聊簧系男【W格上四處走動。您曾經探索過的地方或附近的地方。即使我在第一次嘗試獲取按鍵之前已刷新一下,屏幕也不會首先顯示任何內容,直到您離開起始位置為止。難道不應該先顯示addstr之后再進行刷新,然后getch在那之后等待嗎?我什至嘗試添加一個stdscr.refresh(),但這也無濟于事。如何在等待第一次按鍵之前立即刷新屏幕?import cursesdef start(stdscr):    curses.curs_set(0)    movement = curses.newpad(10, 10)    cur_x, cur_y = 5, 5    while True:        movement.addstr(cur_y, cur_x, '@')        for (x_off, y_off) in [(-1,0),(1,0),(0,-1),(0,1)]:            movement.addstr(cur_y + y_off, cur_x + x_off, '.')        movement.refresh(1, 1, 0, 0, 7, 7) #Nothing is displayed until after the first key-stroke        key_stroke = stdscr.getch()        move_attempt = False        if 0 < key_stroke < 256:            key_stroke = chr(key_stroke)        elif key_stroke == curses.KEY_UP and cur_y > 1:            cur_y -= 1        elif key_stroke == curses.KEY_DOWN and cur_y < 8:            cur_y += 1        elif key_stroke == curses.KEY_LEFT and cur_x > 1:            cur_x -= 1        elif key_stroke == curses.KEY_RIGHT and cur_x < 8:            cur_x += 1        else:            passif __name__ == '__main__':    curses.wrapper(start)
查看完整描述

3 回答

?
www說

TA貢獻1775條經驗 獲得超8個贊

stdscr.refresh()movement.refresh()解決問題之前,先添加一些時間。

通過time.sleep(1)在refresh語句之后添加,它確實寫入屏幕,但隨后在stdscr.getch()調用時消失,但僅在第一次時消失??赡芘cstdscr的某種延遲初始化有關。

stdscr.refresh()之后調用movement.refresh()會產生相同的效果:第一次通過循環會stdscr.refresh()清除屏幕,但不會在隨后的幾次通過循環。通過stdscr.refresh()在程序中盡早調用,可以使這種奇怪的第一次刷新不受影響。


查看完整回答
反對 回復 2021-03-27
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

使用平板電腦時,出于某種原因(我不知道為什么),您必須curses.doupdate在調用平板電腦的之后打電話給refresh。


查看完整回答
反對 回復 2021-03-27
  • 3 回答
  • 0 關注
  • 277 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號