泰酷辣!Python文本终端GUI框架!
转自:python专栏
👇我的小册 40章+教程:(小白零基础用Python量化股票分析小册) ,目前已经300多人订阅
今天梳理几个常见的基于文本终端的 UI 框架,一睹为快!
1
Curses
-
使用整个屏幕 -
创建和管理一个窗口 -
使用 8 种不同的彩色 -
为程序提供鼠标支持 -
使用键盘上的功能键
pip install windows-curses
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() 获得的输入进行判断
2
Npyscreen
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 方法启动应用,应用即可进入等待用户交互的状态
-
[Tab] / [Shift + Tab] 用于切换控件焦点 -
[回车] / [空格] 用于进入选择、设置、确认 -
在选择框架中,方向键与 vim[4] 操作类似,即通过 hjkl 来控制
3
Urwid
-
应用窗口自适应 -
文本自动对齐 -
轻松设置文本块 -
强大的选择框控件 -
可以和各种基于事件驱动的框架集成,比如和 Twisted, Glib, Tornado等等 -
提供诸如编辑框、按钮、多(单)选框 等多种预制控件 -
显示模式支持原生、Curses模式、LCD 显示屏 以及 网络显示器 -
支持 UTF-8 以及 CJK 字符集(可以显示中文) -
支持多种颜色
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,并监控各种事件
4
总结
最后推荐一下我们团队写的量化小册的内容,45篇内容!从Python安装,入门,数据分析,爬取股票基金的历史+实时数据,以及如何写一个简单量化策略,策略回测,如何看资金曲线统统都有介绍!非常超值!
欢迎订阅:原价199 早鸟价2杯咖啡钱,即可永久阅读。现在的价格非常非常低,只要2杯奶茶,就可以终身订阅+课程源码,还有永久陪伴群。48小时无理由退款,放心食用!
推荐阅读:
量化: 如何用Python爬取创业板历史+实时股票数据!|实战股票分析篇利用Pandas 9招挖掘五粮液股价!|实战股票数据分析篇 Pandas滚动操作 |量化股票第一步,用Python画股票K线,双均线图,可视化你的股票数据!|如何用Python爬取全部800多只ETF基金数据!|如何用Python写一个双均线策略 |如何用Python开发一个多策略机器人!上篇!|Python量化系列-用布林策略买五粮液能赚多少钱?|只要4秒钟!用Python 获取上证指数34年的历史日线数据!
入门: 最全的零基础学Python的问题 | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 | 从万众期待到口碑扑街!唐探3令人失望 | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!| 再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|