Python:函数内的全局变量与Curses

1 投票
1 回答
607 浏览
提问于 2025-04-16 12:45

我现在非常非常困惑...

简单来说,我想声明一个全局变量,指向一个curses窗口,这样我就可以使用调试命令。但是它却报错 AttributeError: 'NoneType' object has no attribute 'addstr',这意味着这个变量没有被正确设置?请帮帮我!

wDebug = None

def start(stdscr):
    curses.nocbreak()
    curses.echo()
    screenSize = stdscr.getmaxyx()

    wDebug = curses.newwin(5, screenSize[1], 0, 0);

    curses.init_pair(1, curses.COLOR_WHITE, curses.COLOR_BLUE)

    wDebug.bkgd(curses.color_pair(1))
    wDebug.refresh()

    /* Snip */

    awaitInput(wInput)

    while 1: pass

def awaitInput(window): 
  while 1:
    msg = /* Snip */
    sendMessage(msg)

def sendMessage(msg):
  /* Snip */
  debug("Send message")

def debug(msg):
  wDebug.addstr(msg + "\n")
  wDebug.refresh()  

非常感谢你的时间,

1 个回答

1

你需要使用一个叫做 global 语句:

wDebug = None

def start(stdscr):
    global wDebug
    #...
    wDebug = curses.newwin(5, screenSize[1], 0, 0);

根据文档的说明:

如果没有 global,你就无法给全局变量赋值。

撰写回答