<p>{{cd2>你可以创建一个<cd2}窗口:</p>
<pre><code>try:
unicode
_unicode = True
except NameError:
_unicode = False
class CursesHandler(logging.Handler):
def __init__(self, screen):
logging.Handler.__init__(self)
self.screen = screen
def emit(self, record):
try:
msg = self.format(record)
screen = self.screen
fs = "\n%s"
if not _unicode: #if no unicode support...
screen.addstr(fs % msg)
screen.refresh()
else:
try:
if (isinstance(msg, unicode) ):
ufs = u'\n%s'
try:
screen.addstr(ufs % msg)
screen.refresh()
except UnicodeEncodeError:
screen.addstr((ufs % msg).encode(code))
screen.refresh()
else:
screen.addstr(fs % msg)
screen.refresh()
except UnicodeError:
screen.addstr(fs % msg.encode("UTF-8"))
screen.refresh()
except (KeyboardInterrupt, SystemExit):
raise
except:
self.handleError(record)
</code></pre>
<p>(这基本上是从<code>logging.StreamHandler</code>复制的。)
窗口或键盘需要初始化以允许自动滚动等:</p>
^{pr2}$
<p>这里,<code>screen</code>是主<code>curses</code>屏幕。在</p>