python - 将 python 诅咒与 Asciimatics 相结合
问题描述
我用 Python 制作了一个 curses 程序,想知道是否可以在其中添加 asciimatics 动画?我的目标是在我的一个诅咒窗口中添加动画效果,但似乎我无法更改或调整添加 asciimatics 效果的屏幕的大小。
这是否可以调整 asciimatics 屏幕的大小以将其添加到我的诅咒窗口?
解决方案
[ 编辑:添加了使用现有诅咒句柄的选项。]
简短的回答可能不是没有对您的应用程序或 asciimatics 进行一些更改。
最简单的选择就是在运行动画时允许 asciimatics 接管。例如,如果这是一个标题页,只需在为您的应用程序初始化 ncurses 之前运行它。
如果你真的想把它嵌入到同一个屏幕中,你还有很多工作要做......
首先让我们澄清一下环境的细节...... Asciimatics 在本机可用的系统(例如 Linux、mac)和 Windows 上的 win32 上使用 ncurses,所以如果您在 Windows 上使用类似 PDcurses 的东西,这是不兼容的。对不起 - 没有真正的选择。
然而,如果你只使用像 Linux 这样的原生 curses 系统,你有几个选择......
将您的 curses 调用转换为等效的 Screen 调用。对于打印、使用颜色和获取字符输入,存在明显的一对一映射。如果您需要多个 curses 窗口,您可以使用 Canvases(或者如果这是用于 UI,则可能是 Frames)在 asciimatics 中获得相同的效果。
考虑在https://github.com/peterbrittain/asciimatics/issues/46上工作。这将允许您直接在现有屏幕上开始绘图,而不是假设 asciimatics 可以初始化 ncurses 然后完全控制屏幕(包括清除屏幕和控制刷新)的当前实现。
将您的 curses 屏幕句柄传递给 asciimatics,然后确保您的更新与动画配合。如您在此处看到的,如果您已经有屏幕句柄,则可以构建 curses 屏幕处理程序。
选项 1 可能是最安全的,因为它使用单一一致的 API。如果您前往 asciimatics gitter 大厅(github 主页上的链接),我可以为您提供 2 方面的帮助。选项 3 可能有效,但使用内部 API(因此将来可能会中断),您需要将更新与 asciimatics 同步
推荐阅读
- ios - iOS [钥匙串共享]:从 Lockbox 转换到 KeychainSwift 后,项目不再可访问
- angular - 对具有许多依赖项 Angular 的服务进行单元测试
- javascript - 如何从在javascript中返回对象的函数返回元素对象?
- spring - 如何通过 API 在 nexus 存储库管理器中搜索依赖项?
- java - 使用Java从amazon s3获取对象列表时解析错误
- botframework - Bot Framework Emulator - 无法连接到本地机器人
- ruby - ruby-cms-scanner :取决于:ruby-progressbar (>= 1.9.0) 但未安装
- java - 使用 rowMapper 将 jsonb 列映射到 java 模型
- automated-tests - 从 Puppetry 连接到已经运行的 Chrome 实例
- visual-c++ - Visual Studio C++ 和 max 宏