返回顶部
首页 > 资讯 > 后端开发 > Python >Python 文本终端 GUI 框架,太酷了
  • 748
分享到

Python 文本终端 GUI 框架,太酷了

代码PythonGUI 2023-05-14 21:05:06 748人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

Curses首先出场的是 Curses[1]。CurseCurses 是一个能提供基于文本终端窗口功能的动态库,它可以: 使用整个屏幕 创建和管理一个窗口 使用 8 种不同的彩色 为程序提供鼠标支持 使用键盘上的功能键Curses 可以在任

Curses

首先出场的是 Curses[1]。

Python 文本终端 GUI 框架,太酷了

Curse

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

  • 使用整个屏幕
  • 创建和管理一个窗口
  • 使用 8 种不同的彩色
  • 为程序提供鼠标支持
  • 使用键盘上的功能键

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

pip install windows-curses

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

我们也来试试牛刀:

import curses
myscreen = curses.initscr()
myscreen.border(0)
myscreen.addstr(12, 25, "python curses in action!")
myscreen.refresh()
myscreen.getch()
curses.endwin()
  • 需要注意 addstr 前两个参数是字符坐标,不是像素坐标
  • getch 会阻塞程序,直到等待键盘输入
  • curses.endwin() 作用是退出窗口
  • 如果需要持续监听用户的交互,需要写个循环,并对 getch() 获得的输入进行判断

代码运行效果如下:

Python 文本终端 GUI 框架,太酷了

小试牛刀

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

Npyscreen

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

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

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

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

来看一个小例子:

import npyscreen
class 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 方法启动应用,应用即可进入等待用户交互的状态

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

Python 文本终端 GUI 框架,太酷了

Npyscreen

  • [Tab] / [Shift + Tab] 用于切换控件焦点
  • [回车] / [空格] 用于进入选择、设置、确认
  • 在选择框架中,方向键与 vim[4] 操作类似,即通过 hjkl 来控制

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

Urwid

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

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

  • 应用窗口自适应
  • 文本自动对齐
  • 轻松设置文本块
  • 强大的选择框控件
  • 可以和各种基于事件驱动的框架集成,比如和 Twisted[6], Glib[7], Tornado[8] 等等
  • 提供诸如编辑框、按钮、多(单)选框 等多种预制控件
  • 显示模式支持原生、Curses模式、LCD 显示屏 以及 网络显示器
  • 支持 UTF-8 以及 CJK 字符集(可以显示中文)
  • 支持多种颜色

看看效果:

Python 文本终端 GUI 框架,太酷了

消息框

Python 文本终端 GUI 框架,太酷了

多字体

Python 文本终端 GUI 框架,太酷了

色彩

不知道你看了是什么感觉,我的感觉是:这也太卷了吧~

几乎可以做 GUI 下的所有事情!

更厉害的是,Urwid 完全是按照面向对象的思想打造的框架:

Python 文本终端 GUI 框架,太酷了

Urwid 结构图

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

import urwid
def 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 早已不是主流,但是在一些特殊的行业或者业务中,还是有其存在的价值,研究一下,说不定在特殊的地方可以帮助到我们。

最后,推荐一个很有意思的基于文本终端的应用 —— 命令行网易云音乐[9]:

Python 文本终端 GUI 框架,太酷了

NetEase-MusicBox

是基于 Curses 开发,如果运行起来,能被它的强悍所震撼,有空可以玩玩,比心!

以上就是Python 文本终端 GUI 框架,太酷了的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: Python 文本终端 GUI 框架,太酷了

本文链接: https://lsjlt.com/news/205433.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python文本终端GUI框架,太酷了
    今天梳理几个常见的基于文本终端的 UI 框架,一睹为快! 1Curses 首先出场的是 Curses。 Curses 是一个能提供基于文本终端窗口功能的动态库,它可以: 使用整个屏幕 创建和管理一个窗口 使用 8 种不同的彩色 ...
    99+
    2023-10-22
    python 开发语言
  • Python 文本终端 GUI 框架,太酷了
    Curses首先出场的是 Curses[1]。CurseCurses 是一个能提供基于文本终端窗口功能的动态库,它可以: 使用整个屏幕 创建和管理一个窗口 使用 8 种不同的彩色 为程序提供鼠标支持 使用键盘上的功能键Curses 可以在任...
    99+
    2023-05-14
    代码 Python GUI
  • Python文本终端GUI框架怎么使用
    本篇内容主要讲解“Python文本终端GUI框架怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python文本终端GUI框架怎么使用”吧!Curses首先出场的是 Curses[1]。C...
    99+
    2023-07-06
  • WindTerm:新一代开源免费的终端工具,GitHub星标6.6k+,太酷了
    继 Tabby、Warp 后,今天再来给大家推荐一款终端神器——WindTerm,完全开源,在 GitHub 上已经收获 6.6k 的 star。 https://github.com/kingToolbox/WindTerm 作者...
    99+
    2023-08-20
    github ssh 服务器
  • 带你详细了解Python GUI编程框架
    目录1. GUI编程类关系图2. 常用组件方法3.GUI面向对象写法总结1. GUI编程类关系图 我们来看看Tkinter 的GUI组件关系图 重要说明: 1.上述图表示的是相关类...
    99+
    2024-04-02
  • 使用终极 GUI 框架 NiceGUI 提升你的 Python 应用程序
    介绍 随着机器学习和深度学习网站应用程序的快速增长,开发人员一直在寻找新的 Web 框架,以便更轻松地构建这些网站应用程序。 数据科学应用程序的普及程度已经上升,因此新的框架也在增加。开发人员创建了许多新的框架,这些框架被证明对构建这些...
    99+
    2023-08-31
    python 开发语言
  • 文件处理太慢?试试 Python 分布式框架加速!
    在日常工作中,我们经常会遇到需要处理大量数据的情况,比如数据清洗、数据分析、机器学习等等。而对于大规模数据的处理,传统的单机处理方式已经无法满足我们的需求,因为单机的处理能力是有限的。那么,如何提高数据处理的效率呢?这时候,分布式计算就成...
    99+
    2023-10-14
    分布式 框架 文件
  • Python 文件框架的 Windows 版本有哪些特点?
    Python 作为一种简单易学且功能强大的编程语言,在现代软件开发领域得到了广泛的应用。在 Windows 操作系统上,Python 文件框架的特点也是相当引人注目的。 本文将介绍 Python 文件框架在 Windows 上的一些特点,...
    99+
    2023-11-08
    文件 windows 框架
  • Python 同步框架面试终极攻略:这些问题你都掌握了吗?
    Python 是一种十分流行的编程语言,它支持多种同步框架,如 threading、multiprocessing 等。在面试中,对于同步框架的问题,是经常被问到的。今天,我们就来探讨一下 Python 同步框架的问题,帮助大家更好的掌握...
    99+
    2023-07-08
    面试 同步 框架
  • 你了解Python响应文件框架的工作原理吗?
    Python是一种高级编程语言,它被广泛用于Web开发、数据分析、机器学习等领域。Python的一个重要特性是其丰富的库和框架,其中之一就是响应文件框架。这个框架非常有用,因为它可以帮助我们处理HTTP请求和响应,本文将介绍Python响应...
    99+
    2023-07-20
    响应 文件 框架
  • Python 打包文件框架:你是否真正了解它的奥秘?
    Python 是一种广泛使用的编程语言,它的应用场景非常广泛,从数据分析到机器学习,再到网络爬虫,都能在 Python 中找到相应的解决方案。在 Python 的应用中,打包文件是一个非常重要的环节,尤其是在开发和部署项目时,打包文件能够...
    99+
    2023-06-22
    打包 文件 框架
  • Python的Flask框架中集成CKeditor富文本编辑器的教程
    CKeditor是目前最优秀的可见即可得网页编辑器之一,它采用JavaScript编写。具备功能强大、配置容易、跨浏览器、支持多种编程语言、开源等特点。它非常流行,互联网上很容易找到相关技术文档,国内许多W...
    99+
    2022-06-04
    编辑器 框架 文本
  • Python 分布式框架在文件处理中的应用,你了解吗?
    在现代大数据时代,数据量已经不再是一个局限。当我们需要进行大规模数据处理时,单机的计算资源已经无法满足我们的需求。这时候,分布式系统就成为了我们的选择。Python 作为一门高效的编程语言,也提供了很多分布式框架,比如 PySpark、D...
    99+
    2023-10-14
    分布式 框架 文件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作