Pythoncurses模块详解:终端输入输出的控制
Python curses 是一个提供了对终端屏幕进行字符处理的模块,它可用于编写基于文本界面的应用程序。它提供了一组函数,可以控制窗口和屏幕,包括输入和输出。
首先,我们需要导入 curses 模块:
import curses
然后,我们可以使用 curses.initscr() 函数来初始化屏幕,并创建一个新的窗口。通过 window.addstr(y, x, str) 函数可以在窗口的指定位置输出字符串。例如:
import curses
def main(stdscr):
# 初始化屏幕
curses.initscr()
# 创建一个新的窗口
stdscr = curses.newwin(10, 20, 0, 0)
# 输出字符串到窗口的指定位置
stdscr.addstr(5, 10, "Hello, world!")
# 刷新窗口
stdscr.refresh()
# 等待用户输入
stdscr.getch()
# 运行主函数
curses.wrapper(main)
以上代码在终端屏幕上创建了一个10行20列的窗口,并在第5行第10列输出了字符串 "Hello, world!"。然后它等待用户的输入,直到用户按下任意键退出程序。
除了 addstr() 函数外,curses 模块还提供了许多其他常用的函数和方法来控制终端屏幕的输入和输出。
- curses.start_color():启用颜色属性。
- curses.init_pair(pair_number, fg_color, bg_color):设置颜色对。
- window.border([ls, rs, ts, bs, tl, tr, bl, br]):为窗口添加边框。
- window.getch():从用户处获取一个字符。
- window.getstr([y, x]):从用户处获取一个字符串。
- window.move(y, x):将光标移动到指定位置。
- window.refresh():刷新窗口。
- window.clear():清除窗口的内容。
- window.erase():擦除整个窗口。
下面是一个更复杂的例子,演示了如何使用 curses 模块创建一个简单的文本编辑器:
import curses
def main(stdscr):
# 初始化屏幕
curses.initscr()
# 启用颜色属性
curses.start_color()
# 设置颜色对
curses.init_pair(1, curses.COLOR_YELLOW, curses.COLOR_BLACK)
# 创建一个新的窗口
stdscr = curses.newwin(10, 20, 0, 0)
# 为窗口添加边框
stdscr.border()
# 刷新窗口
stdscr.refresh()
# 将光标移动到第1行第1列
stdscr.move(1, 1)
# 循环等待用户输入
while True:
key = stdscr.getch()
# 如果用户按下 q 键,则退出程序
if key == ord("q"):
break
# 如果用户按下 s 键,则保存文件
elif key == ord("s"):
stdscr.addstr(2, 2, "File saved!", curses.color_pair(1))
stdscr.refresh()
# 否则,将用户输入的字符输出到窗口
else:
stdscr.addch(key)
# 运行主函数
curses.wrapper(main)
以上代码创建了一个简单的文本编辑器,在窗口中显示光标,并等待用户输入。用户可以通过按下 q 键退出程序,按下 s 键保存文件,以及输入其他字符来进行编辑。每次用户的输入都会实时显示在窗口上。
总的来说,Python curses 模块提供了一种简单而强大的方法来控制终端屏幕的输入和输出。通过使用各种函数和方法,可以创建各种基于文本界面的应用程序,如文本编辑器、菜单、游戏等。
