王海鱼 发表于 2024-10-10 10:25:10

基于Python后端构建多种不同的体系终端界面研究

在我们一般开发体系的时候,每每会根据实际需要做出各种不同的体系终端界面,如基于BS的,CS、APP、小程序等等,一般都是基于一个统一接入的Web API后端,本篇体系探寻对基于Python后端构建多种不同的体系终端界面研究,先容一些基于Python后端开发的不同终端界面。
1、Python体系终端界面

我在漫笔《基于SqlAlchemy+Pydantic+FastApi的Python开发框架》中先容了基于Python的FastAPI的后端,构建一个完整的Web API接口,适应多个终端的接入。
基于Python的FastAPI的后端,遵循Restful的Web API标准,通过泛型方式和基类封装的方式,抽象封装了大多数常用的CRUD接口,实际业务中根据我们实际的需要进行扩展接口即可。
https://img2024.cnblogs.com/blog/8867/202409/8867-20240924113052468-318726675.png
如在基类控制器定义的时候,根据提供的Web API接口进行初始化路由即可。
https://img2024.cnblogs.com/blog/8867/202409/8867-20240924113411157-1137281725.png
基类控制器主要是调用CRUD类进行数据处理的,因此每个业务都有本身的CRUD类进行数据操作封装,同时它们也是基类继承的。
https://img2024.cnblogs.com/blog/8867/202409/8867-20240924114448129-68809460.png
我们在基类Crud类中实现了通例数据的处理逻辑,包罗通例的分页查询、更新、删除、查找、插入、以及是否存在记录、排序处理等一系列通用的操作,如果我们需要增加额外的数据处理操作,那么在子类进行增加函数接口即可。
https://img2024.cnblogs.com/blog/8867/202409/8867-20240924114930223-1592414345.png
在数据的通报和处理上,我们采用pydantic 对象和SqlAlchemy的模型对象,进行处理即可。
启动项目后,可以看到WebAPI主页中有详细的Swagger文档先容,非常方便参考使用。
https://img2024.cnblogs.com/blog/8867/202409/8867-20240924130032860-1613866358.png
有了统一Web API的后端,我们可以根据需要扩展实现本身的体系业务终端了。
我们在业务处理上已经编写了很多完整的Winform界面和BS端的界面,我们根据需要进行整合Python的Web API接口。
我们修改指定Winform 前端的设置的API路径,让它指向Python的Web API接口,即可对接Winform前端乐成。
https://img2024.cnblogs.com/blog/8867/202409/8867-20240924130524713-1873915990.png
而对于Vue3+ElementPlus的BS前端界面,由于前端和后端是严格的分离模式,因此也是一样的方式处理即可。
https://img2024.cnblogs.com/blog/8867/202409/8867-20240924130647588-2138966113.png
 
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界面如下。
https://www.wxpython.org/images/HelloWorld2-osx.png
 https://www.wxpython.org/images/HelloWorld2-msw.png
wxpython 主要通过编码方式,对各种布局控件进行使用,雷同Winform的方式,不过我们也可以使用wxFormBuilder来生成界面的代码,然后继承它使用即可。
比方我们可以使用wxFormBuilder来生成界面的代码进行导出到VScode使用即可。
https://img2024.cnblogs.com/blog/8867/202410/8867-20241010102716582-1076599219.png
我们也可以在表单界面中及时查看生成的Python代码
https://img2024.cnblogs.com/blog/8867/202410/8867-20241010102937277-1225747876.png
 我们可以使用它编写一些复杂的界面,如基于数据表格的分页处理。
https://img2024.cnblogs.com/blog/8867/202410/8867-20241010103155164-1299968067.png
通例对话框界面,可以用来编辑数据,如下所示使用布局 wx.BoxSizer 和 wx.FlexGridSizer 实现的布局处理,可以拖动缩放界面
https://img2024.cnblogs.com/blog/8867/202410/8867-20241010104927897-2143041103.png
 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/) 的独立运行程序。根据编译的方式不同,生成不同的文件。
https://img2024.cnblogs.com/blog/8867/202410/8867-20241010105849549-32195404.png
它通过简朴的编码方式实现了界面的生成,整合了很多常见控件的使用,提供了很多案例供参考。
比方,我把它编译为独立程序,雷同于Electron的桌面程序,单独运行。
ui.run(<strong>native=True</strong>)https://img2024.cnblogs.com/blog/8867/202410/8867-20241010110352813-540981118.png
 这个可以利用样式实现雷同通例BS界面的丰富效果,比之前的Wxpython的界面确实美观一些。
如果程序跑在浏览器上,那么就是一个妥妥的BS前端了。
https://img2024.cnblogs.com/blog/8867/202410/8867-20241010112717044-221377584.png
 雷同的界面例子:
https://img2024.cnblogs.com/blog/8867/202410/8867-20241010111109779-982348148.png
 这样,不管它是需要那种界面方式,都可以使用一套代码来统一实现,而且nicegui还提供了很多案例参考。
https://img2024.cnblogs.com/blog/8867/202410/8867-20241010111301002-932483514.png
 不过nicegui也有一些缺点,就是使用的时候,发现它对于界面的一些效果上,还是提供不够多案例代码,很多时候需要结合Tailwind CSS 来实现更加丰富的界面效果。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 基于Python后端构建多种不同的体系终端界面研究