基于Python后端构建多种不同的系统终端界面研究
在我们一般开发系统的时候,往往会根据实际需要做出各种不同的系统终端界面,如基于BS的,CS、APP、小程序等等,一般都是基于一个统一接入的Web API后端,本篇系统探寻对基于Python后端构建多种不同的系统终端界面研究,介绍一些基于Python后端开发的不同终端界面。
1、Python系统终端界面
我在随笔《基于SqlAlchemy+Pydantic+FastApi的Python开发框架》中介绍了基于Python的FastAPI的后端,构建一个完整的Web API接口,适应多个终端的接入。
基于Python的FastAPI的后端,遵循Restful的Web API标准,通过泛型方式和基类封装的方式,抽象封装了大多数常用的CRUD接口,实际业务中根据我们实际的需要进行扩展接口即可。

如在基类控制器定义的时候,根据提供的Web API接口进行初始化路由即可。

基类控制器主要是调用CRUD类进行数据处理的,因此每个业务都有自己的CRUD类进行数据操作封装,同时它们也是基类继承的。

我们在基类Crud类中实现了常规数据的处理逻辑,包括常规的分页查询、更新、删除、查找、插入、以及是否存在记录、排序处理等一系列通用的操作,如果我们需要增加额外的数据处理操作,那么在子类进行增加函数接口即可。

在数据的传递和处理上,我们采用pydantic 对象和SqlAlchemy的模型对象,进行处理即可。
启动项目后,可以看到WebAPI主页中有详细的Swagger文档介绍,非常方便参考使用。

有了统一Web API的后端,我们可以根据需要扩展实现自己的系统业务终端了。
我们在业务处理上已经编写了很多完整的Winform界面和BS端的界面,我们根据需要进行整合Python的Web API接口。
我们修改指定Winform 前端的配置的API路径,让它指向Python的Web API接口,即可对接Winform前端成功。

而对于Vue3+ElementPlus的BS前端界面,由于前端和后端是严格的分离模式,因此也是一样的方式处理即可。

2、基于Python的终端界面研究
上面介绍了基于.net的Winform界面开发,以及基于Vue3+ElementPlus+Typescript的BS端界面开发,是基于Python后端进行的其他语言的终端开发。
那么我们是否也可以采用原生Python来开发界面呢,答案当然是可以的。
使用原生的Python开发类似Winform的桌面端,还可以一套代码编译后实现跨平台的开发,能够在Windows系统、MacOS系统,以及其他Linux系统进行运行的。
1) wxpython+wxFormBuilder组合
如基于VSCode+wxpython+wxFormBuilder组合实现桌面端的开发,当然有些人也可以采用PyQT(PySide)来开发桌面端。
wxpython:https://www.wxpython.org/
wxFormBuilder: https://github.com/wxFormBuilder/wxFormBuilder
我们看看简单的wxpython 代码,它主要
# First things, first. Import the wxPython package.
import wx # Next, create an application object.
app = wx.App() # Then a frame.
frm = wx.Frame(None, title="Hello World") # Show it.
frm.Show() # Start the event loop.
app.MainLoop()
在Mac和Windows界面如下。


wxpython 主要通过编码方式,对各种布局控件进行使用,类似Winform的方式,不过我们也可以使用wxFormBuilder来生成界面的代码,然后继承它使用即可。
例如我们可以使用wxFormBuilder来生成界面的代码进行导出到VScode使用即可。

我们也可以在表单界面中实时查看生成的Python代码

我们可以使用它编写一些复杂的界面,如基于数据表格的分页处理。

常规对话框界面,可以用来编辑数据,如下所示使用布局 wx.BoxSizer 和 wx.FlexGridSizer 实现的布局处理,可以拖动缩放界面

Window界面上展示不是非常漂亮,不过它一套代码也可以在MacOS实现相同的效果,因此我们可以做一套管理系统,编译后再不同的系统上使用 。
注意:MacOS使用需要在Mac上VSCode的PyInstaller编译为App,而Windows上同样在VSCode上使用PyInstaller编译为exe文件即可。
2)使用nicegui构建BS或者独立的程序使用
除了上面介绍的wxpython和wxFormBuilder组合来实现跨平台终端的开发外,也可以使用PyQT等系类的组件来做,不过这里不再深入这些相同类型的组件介绍。
我们来介绍一个比较新兴的一个界面主键nicegui来开发:
nicegui的官网:https://nicegui.io/documentation
Github地址:https://github.com/zauberzeug/nicegui
它是一个可以创建基于服务器端运行的BS前端,也可以是一个独立运行的程序,类似Electron(https://www.electronjs.org/) 的独立运行程序。根据编译的方式不同,生成不同的文件。

它通过简单的编码方式实现了界面的生成,整合了很多常见控件的使用,提供了很多案例供参考。
例如,我把它编译为独立程序,类似于Electron的桌面程序,单独运行。
ui.run(native=True)

这个可以利用样式实现类似常规BS界面的丰富效果,比之前的Wxpython的界面确实美观一些。
如果程序跑在浏览器上,那么就是一个妥妥的BS前端了。

这样,不管它是需要那种界面方式,都可以使用一套代码来统一实现,而且nicegui还提供了很多案例参考。

不过nicegui也有一些缺点,就是使用的时候,发现它对于界面的一些效果上,还是提供不够多案例代码,很多时候需要结合Tailwind CSS 来实现更加丰富的界面效果。
基于Python后端构建多种不同的系统终端界面研究的更多相关文章
- 【Machine Learning】决策树案例:基于python的商品购买能力预测系统
决策树在商品购买能力预测案例中的算法实现 作者:白宁超 2016年12月24日22:05:42 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本 ...
- python flask构建小程序订餐系统--centos下项目开发环境的搭建
1.项目开发环境的搭建(Linux环境) 1)软件的安装 我们搭建整个项目的过程中,我们需要用到下面的一些软件,但是这些软件的安装过程我们在这里不用说明.(因为windows软件的安装比较的简单,类似 ...
- 基于Python的渗透测试信息收集系统的设计和实现
信息收集系统的设计和实现 渗透测试是保卫网络安全的一种有效且必要的技术手段,而渗透测试的本质就是信息收集,信息搜集整理可为后续的情报跟进提供强大的保证,目标资产信息搜集的广度,决定渗透过程的复杂程度, ...
- 基于Hadoop生态技术构建阿里搜索离线系统
一.计算平台架构 平台架构 集群规模 集群特点 二.支撑的搜索业务 搜索业务 处理流程 三.YARN计算平台 iStream计算模型 Schedule改进 AppHistoryServer改进 HSt ...
- python项目构建工具zc.buildout
转载:http://blog.csdn.net/u011630575/article/details/52940099 buildout简介 Buildout 是一个基于Python的构建工具, Bu ...
- Python黑帽编程1.2 基于VS Code构建Python开发环境
Python黑帽编程1.2 基于VS Code构建Python开发环境 0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Atta ...
- 性能测试 基于Python结合InfluxDB及Grafana图表实时监控Android系统和应用进程
基于Python结合InfluxDB及Grafana图表实时监控Android系统和应用进程 By: 授客 QQ:1033553122 1. 测试环境 2. 实现功能 3. 使用前提 4. ...
- 数据分析:基于Python的自定义文件格式转换系统
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- 看我如何基于Python&Facepp打造智能监控系统
由于种种原因,最近想亲自做一个基于python&facepp打造的智能监控系统. 0×00:萌芽 1:暑假在家很无聊 想出去玩,找不到人.玩个lol(已卸载),老是坑人.实在是无聊至极,不过, ...
- 基于开源软件构建高性能集群NAS系统,包括负载均衡(刘爱贵)
大数据时代的到来已经不可阻挡,面对数据的爆炸式增长,尤其是半结构化数据和非结构化数据,NoSQL存储系统和分布式文件系统成为了技术浪潮,得到了长足的发展.非结构化数据目前呈现更加快速的增长趋势,IDC ...
随机推荐
- 【Vue】15 VueX
[什么是VueX?] VueX是一个专门为Vue.js应用程序开发的状态管理模式, 采用集中式存储管理应用的所有组件状态, 以相应的规则保证按照一种可预测的方式发生改变. 即把多个组件的变量统一放到一 ...
- 【转载】 NumPy之:数据类型对象dtype
原文地址: https://www.cnblogs.com/flydean/p/14720858.html ============================================== ...
- 人工智能、机器学习等科技领域论文中常见的词汇SOTA到底是什么意思,具体的用法是什么???
如题,经常可以在文章中看到这个SOTA的词汇,也就是state of the art,这个词汇我是看着感觉十分的不懂,这个词汇有时候被用作名词有时候又被用作形容词,但是不管用作形容词还是名词大多数人的 ...
- 再升级!MoneyPrinterPlus集成GPT_SoVITS
最近有很多优秀的语音合成TTS工具,目前MoneyPrinterPlus已经集成了ChatTTS和fasterWhisper.应朋友们的要求,最近MoneyPrinterPlus也集成了GPT_SoV ...
- Go 进程在容器中无 coredump 产生问题分析
Go 进程在容器中无 coredump 产生问题分析 0x01 起因 coredump 作为一种非常重要的高度手段,在日常开发中经常用到,切换到容器环境后一直没关注.最近测试了下,发现出不了 core ...
- BST 二叉搜索树 BinarySearchTree C++实现(递归/非递归)
目录 二叉搜索树 基本概念 常用结论 用途 二叉搜索树的性能分析 二叉搜索树的操作 查找 插入 删除 代码实现 BSTree.hpp test.cc 二叉搜索树 基本概念 二叉搜索树(BST,Bina ...
- C#/.NET/.NET Core技术前沿周刊 | 第 2 期(2024年8.19-8.25)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- Win11减少C盘占用及清爽系统配置教程
Win11减少C盘占用及清爽系统配置教程 你是否有过C盘爆满而不得不重装系统的经历?你是否有过因为C盘爆满而不得不不断的拓展空间的无奈?你是否有过已经将软件安装在D盘但C盘的空间还是在日益变满的痛苦? ...
- 【2019年第一篇总结】之Mac安装Python系列软件目录汇总
1.第一步,安装Python环境 <[Mac + Python]苹果系统之安装Python3.6.x环境> 2.安装PyCharm并激活 <[转载][Pycharm编辑器破解步骤]之 ...
- Jenkins 运行pipeline 报错:A Jenkins administrator will need to approve this script before it can be us
之前没有注意过这个问题,是因为之前运行pipeline时,默认勾选了"使用 Groovy 沙盒" 这次不小心取消了勾选导致,重新加上勾选即可