在基于 Python 文本的 GUI (TUI) 中输入

2023-11-27

我一直在尝试在 python 2.7 中制作自己的基于文本的 UI,但我想到了一个关于输入的想法。所以我想到了这样的事情:input = raw_input("|" + "input: ".center(78) + "|"),但粗略地说,光标在右侧很远(在我输入它之前才意识到它不起作用:P)。所以,问题是,如何将输入放在屏幕中间,文本在同一行(两侧),并在写“输入:”后输入光标?如果你想知道,我正在使用这个:

if True:
    print c + "Hi! This is a text-based GUI!".center(78, h) + c
    print c + "-" * 78 + c
    print v + "OPTIONS".center(78) + v
    print c + "-" * 78 + c
    print v + "1 - Quit".center(78) + v
    for i in range(1, 7):
        print v + " " * 78 + v
    print c + "-" * 78 + c

在解释器中,它看起来不错:

+------------------------Hi! This is a text-based GUI!-------------------------+
+------------------------------------------------------------------------------+
|                                   OPTIONS                                    |
+------------------------------------------------------------------------------+
|                                   1 - Quit                                   |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
+------------------------------------------------------------------------------+

注:我使用的是Windows XP


这种文本 UI 需要一个终端库,该库了解屏幕的基本布局和功能以及支持的输入设备。

在 Linux(或 OSX)上,广泛认可的标准是ncurses。 Python 提供了一个module包装这个本机库。然而,这个(以及任何使用它的包 - 例如urwid)在 Windows 上的用途有限。

对于您的情况,您需要使用其他东西来提供对本机 Win32 控制台 API 的访问。这可以是 cygwin(PDcurses 的自定义安装),也可以是类似的包pywin32.

或者,如果您真的不想担心所有操作系统特定的废话,您可以安装数学。这提供了一个跨平台API将文本放置在屏幕上的任意位置并处理键盘输入。此外,它还提供更高级别的widgets创建如下文本 UI:

Text UI widgets

完全披露:是的 - 我是这个包的作者。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在基于 Python 文本的 GUI (TUI) 中输入 的相关文章

随机推荐

  • 使用 LINQ 生成填充随机数的随机大小集合

    我现在正在学习 LINQ 我想知道是否有任何方法可以使用它来实际生成列表 而不仅仅是查询已经生成的列表 所以我有以下代码 使用 for 循环来生成随机大小的整数列表并用随机数填充它 有没有办法将其转换为 LINQ var ret new L
  • 当另一个表中存在匹配行时更新行

    仅当另一个表中存在匹配行时 对于主表中该列当前为空的所有行 我才需要将表上的字段更新为 true 这是我想要实现的目标的描述 UPDATE LenqReloaded dbo Enquiry A SET ResponseLetterSent
  • 限制 .net 应用程序的内存使用

    有没有办法限制 NET 应用程序使用的内存量 看看进程调控器 http lowleveldesign wordpress com 2013 11 21 set process memory limit with process govern
  • 如何在NumericUpDown控件中显示空值?

    我有一个 Windows 窗体应用程序 其中包括NumericUpDown控制与Minimum and Maximum相应地将值设置为 50 80 并执行步骤 1 当表单加载时NumericUpDown显示 50 我知道NumericUpD
  • r - 将输出从 sf::st_within 转换为向量

    我尝试使用 R 中的 sf 包来查看 sf 对象是否在另一个 sf 对象内st within功能 我的问题是这个函数的输出是稀疏几何二进制谓词 sgbp我需要一个向量作为输出 以便我可以使用dplyr之后打包进行过滤 这是一个简化的示例 o
  • VS2017 具有新的 getter/setter 语法:如何在 setter 中编写多行?/ [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我使用的是 NET Framework 4 5 2 VS2017 VS2017 为 getter 和 setter 提供了新的语法 现在带有 getter setter 的属性如下所示
  • 提交成功但上传无法在合并表单中使用

    在尝试将提交和上传合 并到一种表单中时 我在上传时遇到问题 但对于提交表单来说没有问题 jQuery Ajax oqcsubmit click function if oqc valid var params oqc serialize a
  • 如何在 R Markdown 中选择特定选项卡?

    我需要从中选择一个选项卡tabset在 R Markdown 文档中 使用 Shiny 运行时 我按照中的例子如何在Shiny中选择特定的tabPanel 并尝试将其适配为 R Markdown 我添加了ids 到选项卡集 选项卡 并在up
  • 对 Python argparse 参数组重新排序

    我在用着argparse我有一个自定义参数组required arguments 有什么方法可以更改帮助消息中参数组的顺序吗 我认为将必需的参数放在可选参数之前更符合逻辑 但没有找到任何文档或问题来提供帮助 例如 改变这个 usage fo
  • 将 csv 文件导入 Python 中的矩阵/数组

    我正在尝试将包含字符串和数字数据矩阵的大 csv 文件导入到 Python 中的数组 矩阵中 在 MATLAB 中 我曾经加载文件并将其简单地分配给一个矩阵 但在 Python 中似乎有点棘手 有人可以建议吗 我对 Python 还很陌生
  • 使用 msbuild 删除空目录

    如何递归处理路径 以便处理完成后路径下不存在空目录 例如 假设我们有C Dir1 Dir2 Dir3并且这些目录中都没有文件 结果应该是删除所有三个目录 我想在不使用自定义任务的情况下完成此任务 像这样的东西应该可以工作 但没有检查计算数千
  • 在自定义 UITableViewCell 中管理 UITextFields 的委托

    因此 我环顾四周 似乎没有任何内容可以准确解释执行此操作的正确方法 我在自定义 UITableViewCell 中有 7 个 UITextField 我的问题是 管理这些 UITextFields 委托的正确方法是什么 由于自定义单元格在技
  • PyCharm 不在主窗口上运行配置

    PyCharm 社区版在 Ubuntu 18 04 上如下所示 请注意 运行配置下拉列表不在我的主窗口上 搜索了文档 设置 视图 但无法弄清楚如何将其附加到主视图 还有其他人有这个问题吗 谢谢 LazyOne 你的回答让我注意到了导航栏 但
  • 如何使用淡入淡出动画设置屏幕亮度?

    是否可以在 iOS 5 1 上以动画方式显示屏幕亮度变化 我在用 UIScreen mainScreen setBrightness float 但我认为突然的改变很难看 当我尝试使用正在进行的先前动画将动画设置为另一个值时 我遇到了接受的
  • WooCommerce:如何显示“产品附加组件”扩展中的字段?

    我正在使用 WooCommerce 的 产品附加组件 1 扩展 它允许产品的自定义字段 这会自动显示在单个产品模板上 通过对单一产品模板的一些尝试和错误 它似乎挂在了某个地方woocommerce single product summar
  • 如何将本地时间字符串转换为 UTC?

    如何转换日期时间当地时间的字符串 to a UTC 时间字符串 我确信我以前做过这个 但找不到它 所以希望将来能帮助我 和其他人 做到这一点 澄清 例如 如果我有2008 09 17 14 02 00在我当地的时区 10 我想生成一个具有等
  • 是否可以检测移动浏览器的 GPS 位置? [复制]

    这个问题在这里已经有答案了 我正在制作一个针对手机的网站 并且希望在用户访问我的默认页面时获取用户当前的 GPS 纬度 经度 以便我可以向他们显示他们所在区域的结果 使用 ASP NET 可以实现这一点吗 See Also 从手机浏览器获取
  • 如何向 tableGrob 图添加标题?

    我有一个表格 我想在它上面打印一个标题 t1 lt tableGrob top 10 events by casualties cols c EVTYPE casualties rows seq 1 10 grid draw t1 这里也提
  • Spring和Hibernate突然将事务设置为只读

    我们有一个在 JBoss 4 2 3 上运行的应用程序 使用 Spring 2 5 2 和 Hibernate 3 2 6 ga 它在 Linux JEE01 2 6 16 60 0 54 5 smp 上运行 使用自己的用户 写入另一台机器
  • 在基于 Python 文本的 GUI (TUI) 中输入

    我一直在尝试在 python 2 7 中制作自己的基于文本的 UI 但我想到了一个关于输入的想法 所以我想到了这样的事情 input raw input input center 78 但粗略地说 光标在右侧很远 在我输入它之前才意识到它不