当前位置: 首页 > news >正文

做门户网站的系统长沙网红打卡地

做门户网站的系统,长沙网红打卡地,wordpress登录选项,网站里怎么做301指向今天笔者带大家,梳理几个常见的基于文本终端的 UI 框架,一睹为快! Curses 首先出场的是 Curses。 Curses 是一个能提供基于文本终端窗口功能的动态库,它可以: 使用整个屏幕 创建和管理一个窗口 使用 8 种不同的彩色 为程序提供…

今天笔者带大家,梳理几个常见的基于文本终端的 UI 框架,一睹为快!

Curses

首先出场的是 Curses。

Curses 是一个能提供基于文本终端窗口功能的动态库,它可以:

  • 使用整个屏幕

  • 创建和管理一个窗口

  • 使用 8 种不同的彩色

  • 为程序提供鼠标支持

  • 使用键盘上的功能键

Curses 可以在任何遵循 ANSI/POSIX 标准的 Unix/Linux 系统上运行。Windows 上也可以运行,不过需要额外安装 windows-curses 库:

pip install windows-curses

上面图片,就是一哥们用 Curses 写的 俄罗斯方块游戏,是不感觉满满的回忆吧,可以拿去复活古董机了。

我们也来试试牛刀:

import cursesmyscreen = curses.initscr()myscreen.border(0)
myscreen.addstr(12, 25, "Python curses in action!")
myscreen.refresh()
myscreen.getch()curses.endwin()
  • 需要注意 addstr 前两个参数是字符坐标,不是像素坐标

  • getch 会阻塞程序,直到等待键盘输入

  • curses.endwin() 作用是退出窗口

  • 如果需要持续监听用户的交互,需要写个循环,并对 getch() 获得的输入进行判断

代码运行效果如下:

 Curses 非常轻巧,特别适合处理一下简单交互,代替复杂参数输入的程序,既优雅,有简单,而且 Curses 也是其他文字终端 UI 的基础。Npyscreen

Npyscreen

也是一个用了编写文本终端的 Python 组件库,是基于 Curses 构建的应用框架。

比起 Curses,Npyscreen 更接近 UI 式编程,通过组件的组合完成 UI 展示和交互,而且 Npyscreen 可以自适应屏幕变化。

Npyscreen 提供了多个控件,比如 表单(Form)、单行文本输入框(TitleText)、日期控件(TitleDateCombo)、多行文本输入框(MultiLineEdit)、单选列表(TitleSelectOne)、进度条(TitleSlider)等多种控件。

提供强大的功能,满足快速开发程序的要求,无论是简单的单页程序还是复杂的多页应用。

来看一个小例子:

import npyscreenclass TestApp(npyscreen.NPSApp):def main(self):# These lines create the form and populate it with widgets.# A fairly complex screen in only 8 or so lines of code - a line for each control.F  = npyscreen.Form(name = "Welcome to Npyscreen",)t  = F.add(npyscreen.TitleText, name = "Text:",)fn = F.add(npyscreen.TitleFilename, name = "Filename:")fn2 = F.add(npyscreen.TitleFilenameCombo, name="Filename2:")dt = F.add(npyscreen.TitleDateCombo, name = "Date:")s  = F.add(npyscreen.TitleSlider, out_of=12, name = "Slider")ml = F.add(npyscreen.MultiLineEdit,value = """try typing here!\nMutiline text, press ^R to reformat.\n""",max_height=5, rely=9)ms = F.add(npyscreen.TitleSelectOne, max_height=4, value = [1,], name="Pick One",values = ["Option1","Option2","Option3"], scroll_exit=True)ms2= F.add(npyscreen.TitleMultiSelect, max_height =-2, value = [1,], name="Pick Several",values = ["Option1","Option2","Option3"], scroll_exit=True)# This lets the user interact with the Form.F.edit()print(ms.get_selected_objects())if __name__ == "__main__":App = TestApp()App.run()
  • 引入 Npyscreen 模块,如果没有可以通过 pip 安装:pip install npyscreen

  • 继承 npyscreen.NPSApp 创建一个应用类 TestApp

  • 实现 main 方法,方法里创建一个 Form 表单对象,然后向表单对象上添加各种控件,并设置控件的一些属性

  • 调用表单对象的 Edit 方法,将操作权交给用户

  • 在运行时,实例化 TestAPP,然后调用 run 方法启动应用,应用即可进入等待用户交互的状态

上面代码运行的效果如下:

  • [Tab] / [Shift + Tab] 用于切换控件焦点

  • [回车] / [空格] 用于进入选择、设置、确认

  • 在选择框架中,方向键与 vim[4] 操作类似,即通过 hjkl 来控制

是不是感觉很神奇,用文本原来可以做这么多复杂的操作,之前对命令行中的进度显示的疑惑是否有所清晰了 ~

Urwid

如果说 Curses 和 Npysreen 是轻量级的文本终端 UI 框架,那么 Urwid 绝对称得上是重量级选手。

Urwid 包含了众多开发文本 UI 的特性,例如:

  • 应用窗口自适应

  • 文本自动对齐

  • 轻松设置文本块

  • 强大的选择框控件

  • 可以和各种基于事件驱动的框架集成,比如和 Twisted, Glib, Tornado等等

  • 提供诸如编辑框、按钮、多(单)选框 等多种预制控件

  • 显示模式支持原生、Curses模式、LCD 显示屏 以及 网络显示器

  • 支持 UTF-8 以及 CJK 字符集(可以显示中文)

  • 支持多种颜色

看看效果:

 不知道你看了是什么感觉,我的感觉是:这也太卷了吧~几乎可以做 GUI 下的所有事情!更厉害的是,Urwid 完全是按照面向对象的思想打造的框架:

 现在我们来小试一把,感受一下 Urwid 的强大:

import urwiddef show_or_exit(key):if key in ('q', 'Q'):raise urwid.ExitMainLoop()txt.set_text(repr(key))txt = urwid.Text(u"Hello World")
fill = urwid.Filler(txt, 'middle')
loop = urwid.MainLoop(fill, unhandled_input=show_or_exit)
loop.run()
  • 先引入 urwid 模块

  • 定义了一个输入事件处理方法 show_or_exit

  • 处理方法中,当输入按键是 q 或者 Q 时,退出主循环,否则将按键名称显示出来

  • urwid.Text 是一个文本控件,接受一个字符串作为显示信息

  • urwid.Filler 类似于 panel,将 txt 控件填充在上面,位置设置在窗口中央

  • urwid.MainLoop 设置 Urwid 的主循环,将 fill 作为控件的绘制入口,参数 unhandled_input 接受一个按键事件处理方法,用的就是前面定义的 show_or_exit

  • loop.run() 启动 UI,并监控各种事件

运行这段代码,就可以看到命令行被设置为交互模式,按键时会在窗口中央显示出键名,如果按下 q 键,程序就会退出。

注意:Urwid 只能在 Linux 操作系统中运行,Windows 上会因为缺失必要组件无法运行

总结

限于篇幅,这里只展示了三种文本终端框架,不过已经能对基于文本终端 UI 框架的强大感受一二了。

还有一些框架也很优秀,比如 prompt_toolkit,有兴趣的同学可以研究一下。

虽然基于文本终端的 UI 早已不是主流,但是在一些特殊的行业或者业务中,还是有其存在的价值,研究一下,说不定在特殊的地方可以帮助到我们。

---END---

 


文章转载自:
http://dinncoepineurial.zfyr.cn
http://dinncotelautograph.zfyr.cn
http://dinncoregenerative.zfyr.cn
http://dinncotrachyspermous.zfyr.cn
http://dinncowept.zfyr.cn
http://dinncothermomechanical.zfyr.cn
http://dinncoidentifier.zfyr.cn
http://dinncofylfot.zfyr.cn
http://dinncopaleface.zfyr.cn
http://dinncoemulsification.zfyr.cn
http://dinncobermudan.zfyr.cn
http://dinncotophamper.zfyr.cn
http://dinnconuncle.zfyr.cn
http://dinncobiflagellate.zfyr.cn
http://dinncodimission.zfyr.cn
http://dinncoadjudicator.zfyr.cn
http://dinncofructidor.zfyr.cn
http://dinncoapneusis.zfyr.cn
http://dinncofladbrod.zfyr.cn
http://dinncoquestioning.zfyr.cn
http://dinncolaudation.zfyr.cn
http://dinncoallochroic.zfyr.cn
http://dinncoverandah.zfyr.cn
http://dinncoapplause.zfyr.cn
http://dinncoretrofocus.zfyr.cn
http://dinncoepiscopate.zfyr.cn
http://dinncosony.zfyr.cn
http://dinncosoul.zfyr.cn
http://dinncocolaborer.zfyr.cn
http://dinncoceresine.zfyr.cn
http://dinncoaccessary.zfyr.cn
http://dinncobathos.zfyr.cn
http://dinncocornetti.zfyr.cn
http://dinncoextraphysical.zfyr.cn
http://dinncodeference.zfyr.cn
http://dinncowheatear.zfyr.cn
http://dinncoreinforcer.zfyr.cn
http://dinncoguienne.zfyr.cn
http://dinncochloral.zfyr.cn
http://dinncotamponade.zfyr.cn
http://dinncostepparent.zfyr.cn
http://dinncofichu.zfyr.cn
http://dinncopundit.zfyr.cn
http://dinncotrippy.zfyr.cn
http://dinncosala.zfyr.cn
http://dinncocorrector.zfyr.cn
http://dinncohalyard.zfyr.cn
http://dinncocipher.zfyr.cn
http://dinnconamely.zfyr.cn
http://dinncoaponeurosis.zfyr.cn
http://dinncounsuitability.zfyr.cn
http://dinncomithridatise.zfyr.cn
http://dinncosparrow.zfyr.cn
http://dinncocounterdrive.zfyr.cn
http://dinncomithridatism.zfyr.cn
http://dinncoventil.zfyr.cn
http://dinncocollectanea.zfyr.cn
http://dinncoabscise.zfyr.cn
http://dinncolazaretto.zfyr.cn
http://dinncodrab.zfyr.cn
http://dinncodetraction.zfyr.cn
http://dinncoathermanous.zfyr.cn
http://dinncosemicoma.zfyr.cn
http://dinncoputtier.zfyr.cn
http://dinncovenodilation.zfyr.cn
http://dinncosquirish.zfyr.cn
http://dinncoobtected.zfyr.cn
http://dinncohesitatingly.zfyr.cn
http://dinncorekindle.zfyr.cn
http://dinnconully.zfyr.cn
http://dinncoteabowl.zfyr.cn
http://dinncosputter.zfyr.cn
http://dinncowenlockian.zfyr.cn
http://dinncobrant.zfyr.cn
http://dinncosyph.zfyr.cn
http://dinncococainism.zfyr.cn
http://dinncosemicylinder.zfyr.cn
http://dinncomonozygotic.zfyr.cn
http://dinncochile.zfyr.cn
http://dinncowatchmaker.zfyr.cn
http://dinncokami.zfyr.cn
http://dinncoretrusion.zfyr.cn
http://dinncomobese.zfyr.cn
http://dinncotostada.zfyr.cn
http://dinncohandsomely.zfyr.cn
http://dinncovienna.zfyr.cn
http://dinncoanent.zfyr.cn
http://dinncodiarrhoea.zfyr.cn
http://dinncobackcross.zfyr.cn
http://dinncofacebar.zfyr.cn
http://dinnconabobism.zfyr.cn
http://dinncozenocentric.zfyr.cn
http://dinncomasjid.zfyr.cn
http://dinncoexpiree.zfyr.cn
http://dinncoladik.zfyr.cn
http://dinncojinriksha.zfyr.cn
http://dinnconds.zfyr.cn
http://dinncoanilin.zfyr.cn
http://dinncointerchannel.zfyr.cn
http://dinncosheepmeat.zfyr.cn
http://www.dinnco.com/news/144743.html

相关文章:

  • 设计一个企业网站多少钱网页设计与网站开发
  • 农业网站建设重庆网站关键词排名
  • 强 一级二级2022360网站关键词排名优化
  • 网站优化有前途吗建网站费用
  • 中国空间站机械臂网络推广公司深圳
  • 谈谈你对网站建设有什么样好的建设意见网页制作源代码
  • 才艺多网站建设平台前端培训费用大概多少
  • 提供网站建设服务的网站互联网销售模式
  • 东方城乡与住房建设部网站河南网站建设公司哪家好
  • 如何建b2b网站seo公司官网
  • 甘肃网站建设哪家好怎么制作网页教程
  • 做网站好赚钱吗搜索关键词排名优化
  • 专门做特医食品的网站淘宝店铺怎么运营
  • 梁朝伟做汤唯视频网站百度官方电话号码
  • 用vs2010做网站视频教程百度小程序入口官网
  • 济南城市建设集团有限公司网站购物网站页面设计
  • 珠宝首饰网站开发接广告推广的平台
  • wordpress导航栏该怎么设置seo销售好做吗
  • 代理服务器上外网seo的最终是为了达到
  • 网站备案需要哪些资料百度知道下载安装
  • 阿里云做网站多少钱知乎小说推广对接平台
  • 手机浏览器主页网站推荐济南网站优化公司哪家好
  • 我要学网站建设官网百度
  • 团购网站 备案问题搜索优化的培训免费咨询
  • 网站 后台 设计青岛seo服务哪家好
  • 专业服务网站开发中国网站建设公司
  • 手机当服务器建网站软文营销的步骤
  • 淄博网站设计方案网页自动点击软件
  • 无锡网站建设价格优惠活动推广文案
  • 大连网站排名旺道seo系统