gpt4 book ai didi

Python Curses 用循环刷新文本

转载 作者:行者123 更新时间:2023-12-01 08:24:10 25 4
gpt4 key购买 nike

我通过 Linux Mint 的 Xfce 终端 ssh(也尝试过 ssh -t)连接到运行 Rasperian Stretch 的 Raspberry Pi。在 Pi 上,我有一个 Python-Curses 示例,我对其进行了修改,试图让当前时间每隔几秒“就地”更新一次,而不是写入自身。但它最初打印一次时间,然后不再打印更新的时间。但是,如果我在笔记本电脑上手动按“Enter”键,时间就会更新,如果我多次快速按“Enter”键,“enters”堆栈就会显示,时间会根据我按 Enter 的次数显示更新。在这种情况下,关于 Curses 和终端或 Python,可能有一些基本的东西我不明白。欣赏它。代码如下:

import curses
import traceback
import datetime
import time

try:
# -- Initialize --
stdscr = curses.initscr() # initialize curses screen
curses.noecho() # turn off auto echoing of keypress on to screen
curses.cbreak() # enter break mode where pressing Enter key
# after keystroke is not required for it to register
stdscr.keypad(1) # enable special Key values such as curses.KEY_LEFT etc

# -- Perform an action with Screen --
stdscr.border(0)
stdscr.addstr(5, 5, 'Hello from Curses!', curses.A_BOLD)
stdscr.addstr(6, 5, 'Press q to close this screen', curses.A_NORMAL)

while True:
# stay in this loop till the user presses 'q'
#stdscr.addstr(7, 5, 'zztop',curses.A_NORMAL)
ti = str((datetime.datetime.now().time()))
stdscr.addstr(8, 5, 'Time: '+ ti, curses.A_NORMAL)
time.sleep(3)

ch = stdscr.getch()
if ch == ord('q'):
break



# -- End of user code --

except:
traceback.print_exc() # print trace back log of the error

finally:
# --- Cleanup on exit ---
stdscr.keypad(0)
curses.echo()
curses.nocbreak()
curses.endwin()

最佳答案

您需要在 sleep 前调用 stdscr.refresh() 以将输出刷新到屏幕。

您可能还想将 stdscr.nodelay(1) 添加到程序的初始化序列中(即,位于 stdscr.keypad(1) 的正下方)。这将使对 stdscr.getch() 的调用成为非阻塞的。或者,您可以改为调用 stdscr.timeout(3000) 并完全删除对 sleep 的调用。

关于Python Curses 用循环刷新文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54409978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com