功能在一个框中诅咒

时间:2017-04-13 03:51:49

标签: python ncurses curses python-curses

那里。任何人都可以告诉我在代码中我做错了什么?计时器功能为什么不出现在框中?

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()

2 个答案:

答案 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电话,则屏幕将使用白底黑字。但是,正确的颜色是另一个问题。