【问题标题】:Combining python Curses with Asciimatics将 python 诅咒与 Asciimatics 相结合
【发布时间】:2021-03-10 14:59:37
【问题描述】:

我用 Python 制作了一个 curses 程序,想知道是否可以在其中添加 asciimatics 动画?我打算在我的一个诅咒窗口中添加动画效果,但似乎我无法更改或调整添加 asciimatics 效果的屏幕。

是否可以调整 asciimatics 屏幕的大小以将其添加到我的 curses 窗口?

【问题讨论】:

  • 可能不会:像大多数硬编码应用程序一样,asciimatics 需要更改其源代码才能做到这一点。

标签: python terminal ncurses curses asciimatics


【解决方案1】:

[ 编辑:添加了使用现有诅咒句柄的选项。 ]

简短的回答可能是对您的应用程序或 asciimatics 进行一些更改。

最简单的选择就是在运行动画时让 asciimatics 接管。例如,如果这是一个标题页,只需在为您的应用初始化 ncurses 之前运行它。

如果你真的想把它嵌入到同一个屏幕中,你还有很多工作要做......

首先让我们澄清一下环境的细节...... Asciimatics 在本机可用的系统(例如 Linux、mac)和 Windows 上的 win32 上使用 ncurses,因此如果您在 Windows 上使用类似 PDcurses 的东西,这是不兼容的。抱歉 - 没有真正的选择。

但是,如果您只使用像 Linux 这样的原生 curses 系统,您有几个选择...

  1. 将您的 curses 调用转换为等效的 Screen 调用。对于打印、使用颜色和获取字符输入,存在明显的一对一映射。如果您需要多个 curses 窗口,您可以使用 Canvases(或者如果这是用于 UI,则可能是 Frames)在 asciimatics 中获得相同的效果。

  2. 考虑使用https://github.com/peterbrittain/asciimatics/issues/46。这将允许您直接在现有屏幕上开始绘图,而不是假设 asciimatics 可以初始化 ncurses 然后完全控制屏幕(包括清除屏幕和控制刷新)的当前实现。

  3. 将您的诅咒屏幕句柄传递给 asciimatics,然后确保您的更新与动画配合。如您所见here,如果您已经有屏幕句柄,则可以构造 curses 屏幕处理程序。

选项 1 可能是最安全的,因为它使用单一一致的 API。如果您前往 asciimatics gitter 大厅(github 主页上的链接),我可以为您提供 2 方面的帮助。选项 3 可能有效,但使用内部 API(因此将来可能会中断),您需要将更新与 asciimatics 同步

【讨论】:

    猜你喜欢
    • 2012-04-08
    • 2014-04-23
    • 2013-11-22
    • 2017-03-19
    • 1970-01-01
    • 2014-09-17
    • 2018-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多