一个简单的文本用户界面(TUI)库。

picotui的Python项目详细描述


picotui是python3的文本用户界面(tui)小部件库。 它与cpython3和 Pycopy(unix版本是 官方支持后者),但应与任何 python3实现,允许访问stdin/stdout文件 描述符。

借助虚拟问答环节,您可以了解更多信息:

问:有一些用于python的tui库,为什么还有另一个呢?

A:URWID是一个著名的图伊图书馆。这是它的一个条目 常见问题解答:“如何创建下拉菜单、浮动窗口和滚动条?- 您需要开始编写一些相当复杂的小部件。这个 功能还没有添加到urwid中。 没有下拉列表的小部件库。0.8.0版 urwid于2004年被导入svn(以及后来的git)。厄维德没有 有10年以上的下拉列表和其他东西。

问:嘿,但你从urwid的faq中截取了答案。上面写着:“但是如果你 愿意写的话,我们接受补丁”。你为什么不实施 那些为urwid提供的小部件?

A:你为什么不呢?不,等等,那没用。我没有实施 因为我不喜欢它的架构 它的小部件集相当弱(因此很难编写新的小部件-在那里 没有足够的例子来开始)。别误会我,但是 事实上,在超过10年的时间里,没有人为urwid编写这些小部件, 有点意思。然而,我试着去攻击另一个,更少,但仍然 已知的python tui库-npyscreen。它的小部件集 先进实用。但是-它仍然有一些架构选择 这使得扩展和覆盖某些行为成为问题。 我也发现它的项目管理有点反应迟钝。所以,在制作之后 我想是时候喘口气了 启动了Picotui。

问:所以,皮科图岛的阳光一定很灿烂,而且一定是最好的 图书馆在那里?

A:唉,不,让我先从大多数TUI库都是基于 用于终端屏幕管理的curses库。它确保如果 你更新了一个屏幕,只做了最少的一组更新。这是 在300波特串行连接时代非常重要。让我们数数: 300波特大约是30字节/秒,标准的VT100屏幕是80*24=~2K。 属性加倍。所以,转移一个完整的屏幕来显示 给用户需要2分钟。如果绘制同一屏幕两次(在 内容),需要4分钟。curseslibrary将其还原为2 分钟。所以,唉,picotui不用诅咒。这是基于事实 picotui希望与pycopy及其哲学兼容 是极简主义-如果可以在不使用curses的情况下进行屏幕输出, 我们就这么做吧。它也基于这样一个事实:没有人使用 300波特调制解调器任何时候,大多数应用程序都在本地终端仿真器中运行 有了即时更新,剩下的大部分都在局域网上运行 还提供快速更新。现代的基本串行连接速度是 115200这仍然是太慢的实时全屏更新。 所以我说“唉”。除了优化的屏幕更新之外,picotui 也缺少许多其他东西:例如,双缓冲(因此重新绘制 以前弹出窗口后面的屏幕内容由您决定),它缺少几何图形 经理,所以坐标的计算由你决定,等等。是的,就像 那-我最缺乏小部件,这就是我实现的。其余的 只是亲吻。

问:但那真的很可悲!

A:确实是这样。唯一的好消息是,现在你有一个选择:如果 你想让你的应用在300波特的调制解调器上运行良好,你可以使用其他的 库,如果需要小部件,可以使用picotui。

问:这么多字,哪里有强制截图?

A:当然:

https://raw.githubusercontent.com/pfalcon/picotui/master/picotui.png

文档

picotui是一个实验性的wip项目,是目前最好的文档。 是源代码(https://github.com/pfalcon/picotui/tree/master/picotui) 和E例如(见下文)。

示例

  • example_widgets.py-在对话框中显示小部件的目录。
  • example_menu.py-显示带有主菜单的“全屏”应用程序。
  • example_dialogs.py-显示一些标准对话框。
  • 示例/-更多分类示例。

已知问题

请注意您在控制台中使用的Unicode字体。一些Linux 已知发行版(如ubuntu)的unicode字体已损坏 默认安装,这会导致各种视觉工件(特别是, ubuntu mono字体不是真正的monospace-许多unicode伪图形 字符有两倍(或大约两倍)宽度,制表符有间隙等)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java中匹配括号和逗号之间所有数字的正则表达式   JavaAndroid正在尝试使用可回收的图像   编译编译并执行java源代码而不知道主方法在哪里?   java组织。w3c。多姆。DomeException:HIERARCHY_REQUEST_ERR:试图在不允许的位置插入节点   java我可以安全地假设被调用的服务器的证书是checkServerTrusted()数组中的第一个吗?   java如何添加修复以避免504网关超时错误   java将集合<String[]>转换为列表   java如何根据api版本在jacksondropwizard中自定义serde?   java应该是可选的。ofNullable()是否用于空检查?   java将jsp文件添加到ear   oracle在java应用程序处理中通过对等方重置sql连接   正在寻找使用Java ThreadLocal进行一般数据收集的框架   java的发行版。util。随机的共享使用后的nextX   java应用程序小部件无法连接到某些设备中的服务器   java Android画布不呈现Framelayout   用java将ascii字符的txt文件读入2d数组   swing将消息框添加到Java程序中,该程序在某一点打开和关闭   java在Scala中处理BZIP字符串/文件   关于JFileChooser的java   java如何在jaxrs中显示PDF文件下载对话框?