python快速开发框架_GitHub - lee2029/pyui4win: 一个用python实现业务逻辑、用xml和html/css/js描述界面的windows程序的快速开发框架...
pyui4win
一个用python实现业务逻辑、用xml和html/css/js描述界面的windows程序的快速开发框架
应用框架
1、pyui4win根据xml/html/js/css创建界面
2、Pyui4win接收用户的操作事件,并选择该事件对应的python处理例程
3、将该例程放在内嵌python引擎中执行
4、Pyui4win将处理结果展示给用户
桥接器原理
1、界面事件和执行器发送过来的消息经过pyui4win运行环境转为pyui4win消息队列中的事件
2、事件分发器从消息队列中获取消息,并根据消息分类派发相应的处理例程
3、如果有对应的python例程处理,那么由python例程处理。否则由C++例程处理
在项目实践中,只需要实现python业务逻辑例程即可
最佳实践
在实践中,发现用html/css/js来实现界面层展现更快更酷炫,而且这样界面层和业务层逻辑更清晰。所以推荐html/css/js写界面逻辑,python实现业务逻辑。
1、本地服务为fe提供有状态会话
2、远端服务为fe提供无状态会话
3、Fe与本地和远端服务交互,实现流程编排,完成业务功能
4、交互采用json格式消息
js和python约定采用json格式来调用。fe暴露一个JsFun4Py函数,供python调用。该函数是js接收python请求的总控制器
python调用js例程:
msg = {
'fun': "func1",
'content': {
'flag': 'vvvvvvvv'
}
}
self.Browser.CallJs(id(msg))
其中Browser是界面中的ie webbrowser控件,CallJs是pyui4win框架对该控件的方法。
js调用python例程,并获取json格式结果:
var dd = window.external.InvokePyFun("{\"fun\": \"xxx\", \"param1\": \"yyyyy\", \"param2\":\"zzzzzzzzz\"}")
与js相同,python中也存在一个处理js请求的总控制器消息WM_FROM_JS:
class MainFrame(PyFrameBase):
def HandleCustomMessageInternal(self, uMsg, wParam, lParam):
if uMsg == WM_FROM_JS:
return self._HandleCommandFromJs(wParam)
def _HandleCommandFromJs(self, wParam):
params = PyWinUtils().Conver2string(wParam)
paramsjson = json.loads(params.decode('gbk'))
if paramsjson['fun'] == "xxxx":
简单界面实践
除了最佳实践,也可以用界面设计器直接配置界面。界面设计器会自动生成界面处理框架代码
Demo
Tamplate下是一个demo。该demo用xml配置的界面。界面配置文件在skin文件夹中
注意事项
请不要用ctype方式调用windows messagebox对话框或者其他标准对话框,需要时可以使用pyui4win里面已经封装好的标准对话框,或者自己在pyui4win中做扩展。用ctype调用其它的api都没有问题。至于原因,还没有时间研究,猜测是与duilib的实现方式和ctype的实现方式有关系。期待对这个问题有研究的同学可以告诉我 :)
vs electron
electron是一个非常有名的框架。采用该框架,界面逻辑和业务逻辑都可以采用js开发。它有非常成功的案例。由于客户端程序的复杂性,electron要求开发人员不仅是专业的js开发人员,而且还需要多种其他技能,比如多线程,同步等等rd同学的技能。如果团队中有这样高水平的fe同学,可以考虑electron。pyui4win应用框架采用的界面层和业务逻辑层分离的方式,降低了系统复杂度,这也相应降低了对开发人员的技能要求。如何选择,需要根据研发团队的水平和开发投入综合决定。
vs cefpython
CEFPython 是 CEF 的 Python 绑定实现。但是莫名的崩溃是一个还是open中的问题,所以,我会拿它来做一些自己的一些工具。但是商业化的产品,我想还是暂时不要冒这个风险
python快速开发框架_GitHub - lee2029/pyui4win: 一个用python实现业务逻辑、用xml和html/css/js描述界面的windows程序的快速开发框架...相关推荐
- 用python开发一个影视网站_GitHub - lyzhanghai/movie_project: 一个使用Python+Flask开发的微电影网站...
微电影网站搭建手册 简介 这是一个使用Python语言和Flask框架搭建的微电影网站.网站分前台和后台,前台面向用户,主要功能有注册会员.搜索电影.观看电影.收藏及评论电影:后台面向网站管理人员,主 ...
- python云盘私有云_GitHub - 0x2642/Umi-Chest: 一个基于python的私有云实验项目
Umi-Chest 一个基于angular 4的单页面舰娘百科App 关于项目名是因为kuma一直找不到好的名字,因为联想到海,然后我喜欢海爷,所以本来想叫海爷百宝箱什么的(一个舰娘的App你叫海爷百 ...
- python 端口扫描 东京_GitHub - w2n1ck/portscan: 一个基于Python+Go的端口扫描及服务探测脚本...
portscan 一个基于Python+Go的端口扫描及服务探测脚本 0x00 前言 近期由于公司环境整改/迭代以及历史弱口令等撞库,运维同事将内网测试环境的一些SSH等敏感端口对外,导致被挖矿团伙利 ...
- python是一种语言还是一个软件-python和GO语言应该选择哪一个?老男孩教育
IT行业是很多人都认为非常受欢迎的领域,因为前景好.待遇高.从业岗位多,越来越多人都想要学习编程.那么编程语言众多,在选择的时候很多人都会在python和GO语言进行徘徊,该如何选择呢? python ...
- python数据显示为什么只能显示最后一个变量,Python变量和简单数据类型,之,的
变量介绍. 变量就是代表某个数据(值)的名称,简单点说变量就是给数据起个名字. 变量的特点 . 1)变量是计算机内存中的一块区域,变量可以存储规定范围内的值,而且值是可变的. 2)在创建变量时会在内存 ...
- 用python爬小说_今天分享一个用Python来爬取小说的小脚本!(附源码)
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章天气预报数据分析与统计之美 ,作者:❦大头雪糕❦ Python GUI制作小说下载器教学讲 ...
- [python]使用pyinstaller打包带界面的Pytorch程序的多个问题
1 opencv兼容性问题 1.1 现象 打包为一个exe完成后,在执行exe时,报错: ImportError: ERROR: recursion is detected during loadin ...
- python 脚本梦幻西游_GitHub - U200915104/mhxy_fz: 一个基于计算机视觉开发的梦幻西游辅助脚本...
mhxy_fz 一个基于计算机视觉开发的梦幻西游辅助脚本 (为了不让别有用心的人用软件牟利,虽然软件打包好了,但仅供有兴趣的人学习代码,不提供软件下载) 从有想法到弄出来花了两三天,很多知识都是现学的 ...
- python和报表生成工具_推荐一个利用 python 生成 pptx 分析报告的工具包:reportgen...
reportgen v0.1.8 更新介绍 这段时间,我对 reportgen 进行了大工程量的修改和更新.将之前在各个文章中出现的函数进行了封装,同时也对现有工具包的一些逻辑进行了调整. 1.rep ...
最新文章
- inline ,inline-block ,block
- Delphi中判断字母与汉字
- tomcat配置log4j日志
- Ubuntu下基于Virtualenv构建Python开发环境
- Linux内存管理:转换后备缓冲区(TLB)原理
- 【Postgresql】pg掉电后无法重启
- iOS开发-使用Storyboard进行界面跳转及传值
- python处理rgb_如何读取Python中给定像素的RGB值?
- 社工必备查询网址汇总
- sklearn实现决策树
- RAII惯用法:C++资源管理的利器
- linux添加jetdirect协议,如何设置 HP JetDirect 设备的网络安全性?
- Android----搜索历史(带区分切换用户id)
- 怎么用阿里云服务器部署项目?上传简单项目
- app界面设计规范及缺陷
- 如何查看自己电脑使用第几代内存条?
- python开源库——h5py快速指南
- Android usb otg通讯总结 HiD通讯直接来取吧
- 荒野行动显示服务器未连接,荒野行动总是显示无法连接网络
- 记账本设置密码,账目不被修改