【问题标题】:How can I make a portable curses interface?如何制作可移植的 curses 界面?
【发布时间】:2017-03-04 16:37:48
【问题描述】:

我正在尝试在 Python 中的 Curses 中创建一个界面,但我想知道在执行脚本时窗口终端增加时如何使其更便携。

比如这个代码在一个窗口(height:80,width:24):

#!/usr/bin/python

import curses
import time
stdscr = curses.initscr()
curses.cbreak()
curses.noecho()
stdscr.keypad(1)

try:
# Run your code here
    height,width = stdscr.getmaxyx()
    num = min(height,width)
    for x in range(num):
        stdscr.addch(x,x,'X')
    stdscr.refresh()
    time.sleep(3)
finally:
    curses.nocbreak()
    stdscr.keypad(0)
    curses.echo()
    curses.endwin()

可以工作并且可以与任何窗口一起移植(它会为整个窗口的大小打印许多“X”字符),但是如果我在执行过程中第二次调整它的大小,它将无法工作并且它会是空的对于终端的某些部分。

我怎样才能让它按我想要的方式工作?

【问题讨论】:

  • 有一个信号会告诉你窗口大小何时发生变化,称为SIGWINCH,所以我想你需要抓住它并获得新的大小并重新绘制你的诅咒东西......不知何故:-)
  • @MarkSetchell 你能举个例子吗?
  • 对不起,我没有。

标签: python terminal python-2.x ncurses curses


【解决方案1】:

您必须通过调用getch 来处理SIGWINCH(使用ncurses),当ncurses 被SIGWINCH 中断时,它将返回KEY_RESIZE

进一步阅读:

【讨论】:

    猜你喜欢
    • 2011-09-22
    • 2012-03-21
    • 2012-08-28
    • 2013-12-29
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多