首页 > 编程语言 >基于Python后端构建多种不同的系统终端界面研究

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

时间:2024-10-10 11:12:55浏览次数:7  
标签:基于 界面 后端 Python API wxFormBuilder BS 多种不同

在我们一般开发系统的时候,往往会根据实际需要做出各种不同的系统终端界面,如基于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界面如下。

/images/HelloWorld2-osx.png

 /images/HelloWorld2-msw.png

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,API,wxFormBuilder,BS,多种不同
From: https://www.cnblogs.com/wuhuacong/p/18455704

相关文章

  • 最新毕设-Python-旅游数据分析与可视化系统-48196(免费领项目)可做计算机毕业设计JAVA、
    基于python的旅游数据分析与可视化系统的设计与实现摘 要本文旨在设计和实现一个基于Python的旅游数据分析可视化系统。该系统以旅游数据为研究对象,利用Python的数据处理能力和可视化技术,对旅游数据进行深入分析,并通过直观的可视化图表展示分析结果。本文首先介绍了旅游数......
  • python程序停到这个地方 client_socket, address = server_socket.accept()
    停到这个地方 client_socket,address=server_socket.accept() 这行代码是在等待客户端的连接请求。server_socket.accept()是一个阻塞调用,它会一直等待有客户端连接上来,然后返回一个新的套接字对象client_socket和客户端的地址address。如果你的程序在这一行停止,可能......
  • 用Python类实现装饰器
    用Python类实现装饰器为什么使用类实现装饰器?类装饰器的实现增加状态的类装饰器带参数的类装饰器为什么使用类实现装饰器?在某些情况下,我们可能希望装饰器保存状态、初始化一些参数,或者通过对象的方法操作。这时,用类实现装饰器会显得更为灵活和合理。类装饰器允许我们......
  • 深入理解 Python 中的 object
    深入理解Python中的object什么是object()?object()的作用和特点object是所有类的基类基础且不可变的对象object提供基本的对象行为object()作为占位符为什么要了解object?什么是object()?object()是Python的一个内置函数,它用于创建一个最基础的对象实例。......
  • Python 给函数加上状态的多种方式
    Python给函数加上状态的多种方式为什么要给函数加状态?方法一:使用函数属性方法二:使用闭包方法三:使用类方法四:使用装饰器为什么要给函数加状态?通常,函数是无状态的:每次调用它都会从相同的初始状态开始执行。而有时候,我们希望函数在多次调用之间能够保留某些信息,例如记......
  • python从0快速上手(二)IDE选择
    在这个代码横飞的世界里,选择一个合适的PythonIDE就好比是选择一把顺手的武器。今天,就让我来带你一探究竟,看看市面上有哪些让人眼花缭乱的PythonIDE,并一较高下。1.PyCharmPyCharm,由大名鼎鼎的JetBrains出品,是Python开发者中的宠儿。它以其强大的代码分析和智能提示功能......
  • 4.文件规划:让你的Python更加简洁
    在上一篇文章之中,小编简单的介绍了目前Python中主流的三大Web框架,分别是Django、Flask和FastAPI,并且介绍了它们的优缺点。并且,我们快速的使用FastAPI搭建了一个简单的RestFul风格的接口,并且使用unicorn作为Web服务器,来向外提供服务。最后,我们使用我们学习到的FastAPI知识,......
  • 最通俗理解python中的self究竟是什么?
    python中,self是一个类的方法(构造函数)中第一个参数,表示实例自身。简单来说,它让类的方法能够访问属于该实例的属性和方法。我们可以把self想象成你在类内部给实例(实参)的“自我指代”,表示这个实例“我自己”的什么什么性质。类比和形象解释:假设你有一张学生表,每个学生有自己......
  • 力扣1436. 旅行终点站 python
    给你一份旅游线路图,该线路图中的旅行线路用数组 paths 表示,其中 paths[i]=[cityAi,cityBi] 表示该线路将会从 cityAi 直接前往 cityBi 。请你找出这次旅行的终点站,即没有任何可以通往其他城市的线路的城市。题目数据保证线路图会形成一条不存在循环的线路,因此恰有......
  • # 使用Python爬虫抓取豆瓣电影标题# 使用Python爬虫抓取豆瓣电影标题
    一、前言在这个小项目中,我们将学习如何使用Python的requests库和lxml库来爬取豆瓣电影首页上的电影标题,并将这些标题保存到一个文本文件中。这不仅能够帮助我们了解基本的网页抓取技术,还能让我们熟悉数据处理的基本流程。二、环境准备确保你的开发环境中已经安装了以下Py......