跨平台文本ui库
vindauga的Python项目详细描述
Vindauga
简介
这是一个纯BSD实现的BSD许可的C++ turbo Vision库。vindauga是挪威语中英文单词"window"的前身。这些窗户真旧…
对于一个项目,我需要一个跨平台的tui for python,并且可用的项目可以在windows或unix上运行,但不能 两者都有。我以前用音译的方法做了一个版本,这实在是太糟糕了,所以就开始了。
此版本的优点;
- 除了诅咒之外没有其他依赖项(请参阅下面的窗口,使其在cmd/powershell窗口中工作)
- 当它到达时将在Windows终端中尝试(它应该可以正常工作)
- 进行了大量重构以使代码基保持一致。
- 它默认使用Unicode(所以没有CP437)
- 请参见utf demo和cyrillic test
- 文件查看器与utf-8编码的文件一起工作,请参见utf demo
- 然而,Unicode数据输入是另一回事,这仍然是一个问题。
gettext
已启用,因此您可以使用内置的,但现在没有提取功能。
- 在DOS窗口和cygwin、putty等中可以使用curses mouse。
- 有些东西是蟒蛇的。
- 有些仍然有点笨重,正在使用中。
- 您可以动态地将控制台窗口的"分辨率"更改为所需的大小。
- 有关如何操作,请参见
vindauga_demo
。 - 这只适用于虚拟终端(包括windows cmd)。
- 有关如何操作,请参见
- 在Mac、Windows、Cygwin、Putty、X-Terms上测试
- Mac上有很多Alt键,您必须使用Esc xxx来代替。
- 您可以打开(交互式)Shell窗口。
我已经实现了像组合框这样的其他小部件,所以有一些额外的小部件可用ootb。 我已经将这些示例组合在一起并进行了转换,所以这里有示例代码。 我试图在适当的地方保留原始的类和方法文档。
您当前被限制为1024个宽度的窗口,可以在vindauga.types.draw_buffer
或子类中对此进行调整
drawbuffer
如果真的有问题。如果您正在对绘图缓冲区进行线性处理,那么它将增长
无论您想要多大的尺寸,但如果您想要预先分配,则为1K。
窗口
如果要在命令窗口中使用它,使用本机python,则需要pip install windows curses
工作正常。
您还需要安装pywin32
库。
终端
在从命令提示符回显stdin时出现缓冲问题。
在cygwin中运行它不需要任何东西,只需在mintty窗口中使用cygwin python即可。
使用它
在示例目录中查找如何使用小部件的小示例。 vindauga演示版vindauga_demo展示了如何将所有内容整合到一个更大的应用程序中。
在大多数情况下,您需要将应用程序子类化并添加自己的
菜单
对象。
这个例子非常简单,尽管它什么也不做
除了使用默认的statusline
渲染背景之外,它允许您退出alt+x
。
# -*- coding: utf-8 -*-fromvindauga.widgets.applicationimportApplicationfromvindauga.widgets.desktopimportDesktopclassDemo(Application):""" How to __change the background _pattern """def__init__(self):Desktop.DEFAULT_BACKGROUND='╬'super().__init__()if__name__=='__main__':app=Demo()app.run()
问题
- 事件有时会消失,特别是在powershell窗口中单击鼠标。点击然后选项卡,然后单击 到达。
屏幕
类做得太多,需要对其进行分解才能将IO移动到它自己的层次结构中- 需要添加更多的测试。
- 尚未支持控制台鼠标
- 我还没有将所有的模块导入收集到
\uu init.py
我还不确定。- 这意味着有很多导入行,但这意味着你只导入你需要的,而且 你所使用的是明确的。
贡献
python版本
我的目标是python 3.7+(它应该与3.6一起使用dataclasses
backport)
类和变量名
- 出于各种原因,它不使用pep-8命名。
- 命名为camel case
- 类首先是大写的;例如
classname
- 变量先小写;例如
variablename
- 缩略词应为上等,并用下划线分隔,以防止在上运行;例如
myhttp_service
文件名
- 文件名应全部小写,以防止在不区分大小写的文件系统上出现问题。
- 它应该指示在中定义的主类,用下划线分隔的单词,例如
class\u name.py
- 可运行文件名(如示例中所示)应使用短划线而不是下划线,例如
my test.py
- 这样可以防止从中意外导入
- 允许您在小部件后面命名示例,而不必使用相互冲突的名称。
- 可运行文件名(如示例中所示)应使用短划线而不是下划线,例如
层次结构
一般;
- 简单视图应该位于
widgets
- 数据请求在
对话框下进行
小工具下的复杂事物
例如有自己窗口的事物。
如果需要跨越多个文件,请将内容移动到子模块中
如果您制作了一个小部件,请在 显然,使用示例中添加一个示例用例
调试
print()
是行不通的,所以使用日志记录
模块并在日志记录的前面加上vindauga。
您可以使用postmessage
fromwidgets.message_window
登录到Vindauga窗口。
参见info box.py
推荐PyPI第三方库