使用PySimpleGUI库构建简单的图形界面

前言 python构建本地GUI程序有很多方式,比如Tkinter,wxPython,或是PyQT。但是对于学生而言,并不需要多么华丽的用户界面,只需要“能用”就行了,开发环节越省力越好。 于是我找到了PySimpleGUI这个库。 A introduction to PySimpleGUI 这个库提供了一种近乎傻瓜化的方式,采用List来描述一个GUI界面,同时支持一个简单程序需要的全部特性,并且支持Win/Mac/Linux三大平台,十分适合拿来封装代码。 安装 pip install PySimpleGUI 在文件开头加上库引用: import PySimpleGUI as sg 元素 PySimpleGUI有着丰富的控件支持。 文本框(Text) sg.Text('文本框',size=(12,1),key='output') '文本框'为框体显示的文字,size为框体的大小,key为框体标识,用于之后对文本框的定位。 输入框(Input) sg.Input(key='input') 按钮(Button) sg.Button('Go') 'Go'为按钮的名字。也可以另外设置key值。 下拉框(Comobo) [ sg.Text("City", size = (20, 1)), sg.Combo(("北京", "上海", "深圳"), size=(10, 1), default_value="上海", key = "-CITY-")] 弹窗(Popup) sg.Popup('弹窗1','This is the first one') sg.Popup('弹窗2','This is the second one') sg.Popup('弹窗3','This is the third one') 弹出一个窗口包含标题和内容。 选择文件(FileBrowse) sg.FileBrowse() 选择文件路径(FolderBrowse) sg....

January 26, 2022 · zeroy

Bilibili直播弹幕收发小程序

项目地址 需求分析 在Linux下直播看不到弹幕,无法与观众互动。 实现过程 第一阶段 问题可拆分为收与发。 可行性分析 B站有API能够返回一个直播间最近的10条弹幕,可以依赖这个API接收弹幕。 抓包可知一次发送弹幕的行为即为一次POST请求,可以使用python脚本实现发送信息。 分别编写发送和接收弹幕的程序。开两个终端使用。 第二阶段 开两个终端切换较为麻烦,于是萌生了把两个程序整合成一个的想法,想实现类似网页的上方是弹幕下方是输入框的效果。 可行性分析 弹幕的动态捕捉依赖间隔固定时间地获取最近10条弹幕,提取出新的弹幕,显示在终端上,但是如果整合进输入程序,输入方法会阻塞进程,如果一直不输入就没有办法获取新的弹幕,所以需要为输入设定超时。 查阅资料得知,为输入方法设定超时需要使用多线程,或者异步异常信息处理,刚学py,不会这些。。。 查阅英文资料和pypi得知,python有个inputimeout库可以处理超时输入的问题,所以就整上了。 但是在现在这一流程中,每次输入超时都需要清屏,这样每次更新弹幕的时候都会闪一下,体验非常不好。 第三阶段 有没有办法实现一个terminal中分屏显示都个session呢? 可行性分析 结合我个人的Linux使用经验,可以使用tmux这个工具实现分屏操作,所以第二阶段的工作就白做了。。。 最终效果 不足与提升空间 冷启动时需要较多的步骤,不够优雅。 未来可以尝试使用GUI框架封装代码,实现一个输出框一个输入框收发代码。 1/25 Update 采用PysimpleGUI这个最简单的GUI库封装了代码,现在很好用()

January 18, 2022 · zeroy