如何在Python中创建静态框架ASCII接口?

时间:2012-07-01 18:46:03

标签: python terminal

当我在Mac终端中使用less命令时,我显示了指定文件的23行切片。如果我向下移动文件,然后在终端窗口中向上滚动,我在当前切片之前看不到任何文件内容。相反,我在使用less之前看到了我输入的命令。

我想使用这个或类似的效果来创建一个只显示当前屏幕的ascii游戏界面,没有历史记录。我会在屏幕上绘制我的帧并仅更改这些帧中的文本或选项。这在大多数或完全在命令行环境中运行的旧系统中非常常见。

是否有提供此功能的Python模块?这是我能够或应该自己实施的效果吗?

以下是一些可以从此效果中受益的示例屏幕元素。

+-------------------------------------------------------------------+
|                                                                   |
| Dialog dialog dialog dialog dialog dialog dialog dialog dialog    |
| dialog dialog dialog dialog dialog dialog dialog dialog dialog    |
| dialog dialog dialog dialog dialog dialog dialog dialog dialog    |
| dialog dialog dialog dialog dialog dialog dialog dialog dialog    |
| dialog dialog dialog dialog.                                      |
|                                                                   |
|                                                                   |
|                                                                   |
+--------------------+---------------+------------------------------+
|   Attack           |     South     |            HP/Max   MP/Max   |
| > Cast Magic       |       -       |   Tom:    120/120   60/91    |
|   Use Item         |      New      | > Dick:    27/133   47/47    |
|   Tactics          |  Schwartzton  |   Harry:   87/104   16/113   |
+--------------------+---------------+------------------------------+

4 个答案:

答案 0 :(得分:6)

我建议查看curses模块。它是ncurses库的接口,用于此目的(我相信许多终端应用程序都写在其中)。 documentation相当不错,有几个不错的tutorials也应该让你朝着正确的方向前进。

(要么自由使用\r。)我强烈建议curses模块,因为它应该为你想做的事情提供更多的灵活性。

编辑:如果您对创建跨平台应用程序感兴趣,请记住curses模块仅适用于* nix系统。根据文件:

  

没有人制作了curses模块的Windows端口。

该教程建议在Windows上使用this library,但如果下载页面上的日期是任何指示,则它在相当长的时间内没有更新。您可以查看this module,它看起来更近。

答案 1 :(得分:3)

您所谈论的是curses。它是一个与ncurses接口的Python模块。我发现使用curses的最佳教程就是这个:http://www.dev-explorer.com/articles/python-with-curses

一些使用诅咒的流行程序(虽然来自另一种语言)是aptitude和nano。

答案 2 :(得分:3)

I've been struggling with this issue too. I wanted a simple cross platform solution, so I extended asciimatics to provide a set of widgets to create form-based UIs like this. For example:

Text UI widgets

The resulting code should be quite concise and work on any modern OS (including Windows, Linux and OSX) without installing extra native libraries. As you can see from the contact list sample the standard widgets are easy to lay out and should provide most of your needs.

答案 3 :(得分:-1)

如果您正在寻找制作ascii游戏,那么asciimatics可能不会起作用,因为它主要用于表格之类的东西。使用curses肯定是要走的路。虽然没有官方的诅咒端口用于Windows,但在https://www.lfd.uci.edu/%7Egohlke/pythonlibs/#curses有一个很好的非官方端口,所以一定要检查出来。