那里。任何人都可以告诉我在代码中我做错了什么?计时器功能为什么不出现在框中?
import curses
from datetime import datetime
stdsrc= curses.initscr()
SPACE_KEY = ord(' ')
box1 = curses.newwin(20, 30, 10, 10)
box1.box()
def run(win):
win.timeout(1000)
start = datetime.now()
while True:
now = datetime.now()
minutes, seconds = divmod((now - start).total_seconds(), 60)
win.addstr(0, 0, "%02d:%02d" % (minutes, round(seconds)))
c = win.getch() # c variable to get user character
if c == SPACE_KEY:
break
box1.refresh()
curses.wrapper(run)
curses.endwin()
答案 0 :(得分:0)
addstr
的前两个参数是启动文本的坐标。在您的代码中,您将在坐标0,0
处开始文字,而您的框从坐标20,30
开始。
答案 1 :(得分:0)
由于以下两个原因,计时器不会出现在框中:
计时器被写入错误的窗口,
您正在阅读的窗口(使用startActivity(intent)
)重新绘制并覆盖该框。
以下是一个修改后的示例,该框使getch
的子窗口,并且(顺便说一下)将计时器移离框边框:
win
对import curses
from datetime import datetime
SPACE_KEY = ord(' ')
def run(win):
box1 = win.subwin(20, 30, 10, 10)
box1.box()
win.timeout(1000)
start = datetime.now()
while True:
now = datetime.now()
minutes, seconds = divmod((now - start).total_seconds(), 60)
box1.addstr(1, 1, "%02d:%02d" % (minutes, round(seconds)))
box1.refresh()
c = win.getch() # c variable to get user character
if c == SPACE_KEY:
break
stdsrc = curses.initscr()
curses.wrapper(run)
的调用是不必要的; initscr
这样做。如果您删除了curses.wrapper
电话,则屏幕将使用白底黑字。但是,正确的颜色是另一个问题。