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

Jac*_*out 6 python terminal

当我less在Mac终端中使用该命令时,我显示了指定文件的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   |
+--------------------+---------------+------------------------------+
Run Code Online (Sandbox Code Playgroud)

Ric*_*ano 6

我建议查看curses模块.它是ncurses库的接口,用于此目的(我相信很多终端应用程序都写在其中).该文档是相当不错,有几个很好的教程也应该设置你在正确的方向.

(无论是那种还是自由使用\r.)我强烈建议使用该curses模块,因为它应该为你想做的事情提供更多的灵活性.

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

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

该教程建议在Windows上使用此库,但如果下载页面上的日期是任何指示,则它在相当长的时间内未更新.您可以查看此模块,该模块看起来更近.


Pet*_*ain 6

我也一直在为这个问题苦苦挣扎。我想要一个简单的跨平台解决方案,所以我扩展了asciimatics以提供一组小部件来创建这样的基于表单的 UI。例如:

文本 UI 小部件

生成的代码应该非常简洁,并且可以在任何现代操作系统(包括 Windows、Linux 和 OSX)上运行,而无需安装额外的本机库。正如您从联系人列表示例中看到的那样,标准小部件很容易布置并且应该可以满足您的大部分需求。