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程序的快速开发框架...相关推荐

  1. 用python开发一个影视网站_GitHub - lyzhanghai/movie_project: 一个使用Python+Flask开发的微电影网站...

    微电影网站搭建手册 简介 这是一个使用Python语言和Flask框架搭建的微电影网站.网站分前台和后台,前台面向用户,主要功能有注册会员.搜索电影.观看电影.收藏及评论电影:后台面向网站管理人员,主 ...

  2. python云盘私有云_GitHub - 0x2642/Umi-Chest: 一个基于python的私有云实验项目

    Umi-Chest 一个基于angular 4的单页面舰娘百科App 关于项目名是因为kuma一直找不到好的名字,因为联想到海,然后我喜欢海爷,所以本来想叫海爷百宝箱什么的(一个舰娘的App你叫海爷百 ...

  3. python 端口扫描 东京_GitHub - w2n1ck/portscan: 一个基于Python+Go的端口扫描及服务探测脚本...

    portscan 一个基于Python+Go的端口扫描及服务探测脚本 0x00 前言 近期由于公司环境整改/迭代以及历史弱口令等撞库,运维同事将内网测试环境的一些SSH等敏感端口对外,导致被挖矿团伙利 ...

  4. python是一种语言还是一个软件-python和GO语言应该选择哪一个?老男孩教育

    IT行业是很多人都认为非常受欢迎的领域,因为前景好.待遇高.从业岗位多,越来越多人都想要学习编程.那么编程语言众多,在选择的时候很多人都会在python和GO语言进行徘徊,该如何选择呢? python ...

  5. python数据显示为什么只能显示最后一个变量,Python变量和简单数据类型,之,的

    变量介绍. 变量就是代表某个数据(值)的名称,简单点说变量就是给数据起个名字. 变量的特点 . 1)变量是计算机内存中的一块区域,变量可以存储规定范围内的值,而且值是可变的. 2)在创建变量时会在内存 ...

  6. 用python爬小说_今天分享一个用Python来爬取小说的小脚本!(附源码)

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章天气预报数据分析与统计之美 ,作者:❦大头雪糕❦ Python GUI制作小说下载器教学讲 ...

  7. [python]使用pyinstaller打包带界面的Pytorch程序的多个问题

    1 opencv兼容性问题 1.1 现象 打包为一个exe完成后,在执行exe时,报错: ImportError: ERROR: recursion is detected during loadin ...

  8. python 脚本梦幻西游_GitHub - U200915104/mhxy_fz: 一个基于计算机视觉开发的梦幻西游辅助脚本...

    mhxy_fz 一个基于计算机视觉开发的梦幻西游辅助脚本 (为了不让别有用心的人用软件牟利,虽然软件打包好了,但仅供有兴趣的人学习代码,不提供软件下载) 从有想法到弄出来花了两三天,很多知识都是现学的 ...

  9. python和报表生成工具_推荐一个利用 python 生成 pptx 分析报告的工具包:reportgen...

    reportgen v0.1.8 更新介绍 这段时间,我对 reportgen 进行了大工程量的修改和更新.将之前在各个文章中出现的函数进行了封装,同时也对现有工具包的一些逻辑进行了调整. 1.rep ...

最新文章

  1. inline ,inline-block ,block
  2. Delphi中判断字母与汉字
  3. tomcat配置log4j日志
  4. Ubuntu下基于Virtualenv构建Python开发环境
  5. Linux内存管理:转换后备缓冲区(TLB)原理
  6. 【Postgresql】pg掉电后无法重启
  7. iOS开发-使用Storyboard进行界面跳转及传值
  8. python处理rgb_如何读取Python中给定像素的RGB值?
  9. 社工必备查询网址汇总
  10. sklearn实现决策树
  11. RAII惯用法:C++资源管理的利器
  12. linux添加jetdirect协议,如何设置 HP JetDirect 设备的网络安全性?
  13. Android----搜索历史(带区分切换用户id)
  14. 怎么用阿里云服务器部署项目?上传简单项目
  15. app界面设计规范及缺陷
  16. 如何查看自己电脑使用第几代内存条?
  17. python开源库——h5py快速指南
  18. Android usb otg通讯总结 HiD通讯直接来取吧
  19. 荒野行动显示服务器未连接,荒野行动总是显示无法连接网络
  20. 记账本设置密码,账目不被修改

热门文章

  1. Ubuntu查看解释器的两条命令
  2. 关于8086七种寻址方式的练习
  3. python的sorted排序具体解释
  4. My.WinformMvc,一个 Winform MVC 框架
  5. 罗列几个Android插件化开发框架
  6. simpson积分模板
  7. 简单地使用jquery的validate
  8. osmand中矢量数据地图绘制
  9. DialogBoxIndirectParam
  10. Visual Studio 2010 中编写C代码的一些常见问题