围绕终端样式、屏幕定位和键盘输入的一种薄而实用的包装。

blessed的Python项目详细描述


Travis Continuous IntegrationTeamCity Build statusCoveralls Code CoverageLatest VersionDownloadsJoin Chat

简介

有福的是python中一个简单实用的终端功能包装器。

forved编码看起来像这样…

fromblessedimportTerminalt=Terminal()print(t.bold('Hi there!'))print(t.bold_red_on_bright_green('It hurts my eyes!'))witht.location(0,t.height-1):print(t.center(t.blink('press any key to continue.')))witht.cbreak():inp=t.inkey()print('You pressed '+repr(inp))

简要概述

forved是一个更简单的包装curses,提供:

  • 风格,颜色,也许还有一点定位 先清除整个屏幕。
  • 非常适合标准python字符串格式。
  • 提供最大力矩终端高度和宽度,以便您可以响应 端子尺寸变化。
  • 避免在输出通过管道传输到非终端时造成混乱: 输出到任何类似文件的对象,如stringio、文件或管道。
  • 使用terminfo(5)数据库,因此它可以处理任何终端类型 并支持任何终端功能:不再调用tigetstr 以及tparm
  • 保持最小的内部状态,这样你就可以自由地与 调用curses或您喜欢的任何其他终端库。
  • 提供大量的上下文管理器来安全地表示终端模式, 在退出时自动将终端恢复到安全状态。
  • 当有人将输出重定向到文件时,请明智地操作,忽略 所有终端序列,如样式、颜色或位置。
  • 简单的键盘操作:在 系统首选的区域设置并支持应用程序/箭头键。
  • 允许包含序列的字符串的可打印长度为 决心。

有福的提供…

  • Windows命令提示符支持。python for windows的PDCurses构建 目前只提供部分支持-有计划与 与colorama一致的ansi模块来解决这个问题。Patches welcome

之前和之后

对于内置的curses模块,这是通常的 在屏幕底部打印一些带下划线的文本:

fromcursesimporttigetstr,setupterm,tparmfromfcntlimportioctlfromosimportisattyimportstructimportsysfromtermiosimportTIOCGWINSZ# If we want to tolerate having our output piped to other commands or# files without crashing, we need to do all this branching:ifhasattr(sys.stdout,'fileno')andisatty(sys.stdout.fileno()):setupterm()sc=tigetstr('sc')cup=tigetstr('cup')rc=tigetstr('rc')underline=tigetstr('smul')normal=tigetstr('sgr0')else:sc=cup=rc=underline=normal=''# Save cursor position.print(sc)ifcup:# tigetnum('lines') doesn't always update promptly, hence this:height=struct.unpack('hhhh',ioctl(0,TIOCGWINSZ,'\000'*8))[0]# Move cursor to bottom.print(tparm(cup,height-1,0))print('This is {under}underlined{normal}!'.format(under=underline,normal=normal))# Restore cursor position.print(rc)

forved相同的程序只是:

fromblessedimportTerminalterm=Terminal()withterm.location(0,term.height-1):print('This is'+term.underline('underlined')+'!')

要求

forved在debian linux、mac和 弗里伯斯。

进一步的文档

更多文档可在http://blessed.readthedocs.org/en/latest/

缺陷、贡献、支持

bugs或建议?访问issue tracker并提交问题。 我们欢迎您的错误报告和功能建议!

是否要贡献?太棒了!我们写了一个 guide 帮助你。

您是否陷入困境,需要支持?试试stackoverflow。如果 你还是有麻烦,我们想听听!打开一个问题 在issue tracker中有一个格式良好的问题。

许可证

forved在麻省理工学院的许可证下。请参阅许可证文件。

分叉

祝福的blessings的叉。 自1.7以来的变更均已提出,但上游未接受。

此外,node.js语言中的项目same name无关,或者是一个fork 以任何方式。

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

推荐PyPI第三方库


热门话题
java Kafka producer大量内存使用(泄漏?)   java NullPointerException。。。正在插入数据但无法检索数据[Mysql DB]   java spring+jpa+hibernate=没有可用于当前线程的实际事务的EntityManager无法可靠地处理“persist”调用   getelementbyid在没有ID的情况下如何在java中使用GetElementsById   java有没有一种使用WatchService强制轮询的方法?   java将值从jframe传递给另一个jframe并使用它   Java/Groovy中带重试的反应式事件处理   具有两个包装器元素的java Jackson XML ArrayList输出   java总是在范围内使用不同的随机元素   取消选择java下拉列表值   多线程如何在Java中为对象的不同成员拥有不同的同步块   java如何使用多线程从文本文件中读取输入   java Spring启动附加崩溃命令   java使用公共或单独的actionPerfomed方法有什么区别   java用Spring3.0中的SpEL替换JSP中的EL   java作为windows服务运行应用程序时无法访问共享文件夹   java xml 1.1规范中的“解析数据”是什么意思?   以编程方式设置JComboBox索引时java触发ItemListener   java Android WebView:只加载HTML,不加载JS或CSS(在某些设备中)   Java:计算do/while循环的数量