最近感觉Python越用越顺手了,干啥都挺好用,可是就桌面应用这一块一直没有找到很好的解决方案,试过了TK、QT、wx之流的GUI方案后感觉都只能做点简单的界面还行,控件稍微多点就感觉好变态啊,而且界面还是丑的一逼。。。今天闲逛居然发现了Eel这货,类似Electron的效果,可以直接使用HTML来做界面,程序逻辑部分还是用python写,js和py可以无缝对接,感觉好像发现了新大陆~

环境准备

  • Python 3.7.3
  • Chrome浏览器(由于Eel是直接调用的Chrome的app启动模式,所以自己很轻量,不过需要提前安装有Chrome)
  • IDE用了VSCode
  • 前端直接使用BootCDN上的bootstrapjQuery
  • 安装Eel
pip install eel

效果展示

文件结构

.
├── main.py 主入口
├── venv    virtualenv环境
└── web     静态文件├── css├── favicon.ico├── img└── main.html

上面web文件夹用来存放各种静态文件,我是直接用的CDN上的css和js库,比用npm装到本地还省事儿。
这里主要提一下favicon.ico这个文件,以前撸html从来没做过这个图标,在Eel中这个文件将会显示为程序左上角的图标,所以还是挑个好看点的扔进来吧。

main.py

import eel# 定义html文件所在文件夹名称
eel.init('web')@eel.expose # 使用装饰器,类似flask里面对路由的定义
def py_fun(a):content = '你好!' + a    return(content)# 测试调用js中的函数,同样需要使用回调函数
js_return = eel.js_fun('python传过去的参数')(lambda x: print(x))# 启动的函数调用放在最后,port=0表示使用随机端口,size=(宽,高)
eel.start('main.html', port=0, size=(600,300))

main.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Eel演示</title><link href="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"><script type="text/javascript" src="/eel.js"></script>
</head>
<body><div class="container"><div class="card mt-4"><div class="card-body"><h4>js & py互调测试</h4><input type="text" class="form-control" id="in"><p id="out"></p><button class="btn btn-lg btn-success" onclick="doThis()">调用Python函数</button></div></div></div><script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script><script src="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script><script>// 调用python中的函数,注意需要在定义前加上async声明异步async function doThis(){    var par=$("#in").val();let content = await eel.py_fun(par)();  //这里用let不用var,调用的python函数后面是两对括号$("#out").text(content);}// 将js中的函数暴露给python,这个貌似不怎么需要用eel.expose(js_fun);function js_fun(a){return('这是调用js中函数返回的结果:' + a);}</script>
</body>
</html>

总结

总体来说还是比较切中我的G点的,能用HTML做界面的话,颜值肯定有保证了,接下来就是继续研究python源代码转EXE或者加密打包的问题了,还有~不知道如果配上vue.js的话会不会飞起来?

Python使用Eel和HTML开发桌面应用相关推荐

  1. python eel + vue开发桌面应用

    python eel + vue 教程 eel打包命令 python -m eel [your_main_script] [your_web_folder] python -m eel main.py ...

  2. python开发工具管理系统_Python开发桌面软件文档及网址管理工具,强迫症的福音...

    原标题:Python开发桌面软件文档及网址管理工具,强迫症的福音 写在前面 这两天用python鼓捣开发了一个软件,分享给同事,觉得很实用,可以大大提高工作效率,想通过平台分享出来给大家 希望给爱好p ...

  3. Python+WebKit+HTML开发桌面应用程序

    Python+WebKit+HTML开发桌面应用程序 前言 几天前写了一个备份的小工具,用Python写个脚本,也就花个一天的时间搞定,给客户用了一下,对功能很满意,但对界面不满足,想要一个图形界面来 ...

  4. python开发桌面应用怎么样_python为什么不适合开发桌面软件?

    展开全部 不适合,因为python本身是2113脚本语言,5261如果要开发桌面软件,要用到py2exe等工具来将一个有4102GUI的.py文件转换成exe等可执1653行文件,在这个过程中,很容易 ...

  5. python可以开发桌面应用软件吗_用Python可以开发出桌面软件吗?

    网友解答: 这个可以肯定的说,是可以的.python作为一门胶水型语言,涉及的面众多,包含大量第三方库,功能强大,要是连一个桌面软件都不能开发,怎么说的过去,下面我主要说一下几个常用的开发GUI程序的 ...

  6. 实用 | 利用 aardio 配合 Python 快速开发桌面应用

    1. 前言 我们都知道 Python 可以用来开发桌面应用,一旦功能开发完成,最后打包的可执行文件体积大,并且使用 Python 开发桌面应用周期相对较长 假如想快速开发一款 PC 端的桌面应用,推荐 ...

  7. 为什么用Python开发桌面应用程序

    为什么用Python开发桌面应用程序 为什么用Python开发桌面应用程序 1)wxWidgets是一个比MFC优雅的库,TortoiseCVS用wxWidges而不用MFC,就是因为wxWidget ...

  8. Python 开发桌面应用竟然如此简单

    这是「进击的Coder」的第 496 篇技术分享 作者:星安果 来源:AirPython " 阅读本文大概需要 7 分钟. " 1. 前言 我们都知道 Python 可以用来开发桌 ...

  9. python软件包自带的集成开发环境-Python的10大集成开发环境和代码编辑器(指南)...

    使用IDLE或者Python Shell来编写Python是非常适合于简单程序的,但是这些工具往往将大型的编程项目变成一个个充满绝望和沮丧的"坑".使用一款集成开发环境甚至是一款好 ...

最新文章

  1. 2019 年,19 种方法让自己成为更好的 Node.js 工程师
  2. Matlab将一矩阵中等于某个值的元素全部替换成另一个值
  3. wex5中win8或者win10操作系统studio中新建.w向导或其他的编辑窗口显示不全
  4. 推荐一系列优秀的Android开发源码
  5. 我的CSS笔记(一)
  6. 锐捷认证成功但是无法上网的问题
  7. SIP协议及与Freeswitch的关系
  8. 软考网络工程师+计算机等级考试四级网络工程师--MAN标准LAN标准
  9. 回顾经典: AlexNet, CaffeNet — Winner of ILSVRC 2012
  10. tcpdump输出内容分析
  11. 第五届四川省职工职业技能大赛决赛计算机程序设计员技术文件大纲
  12. jQuery 实现动态粒子特效,太美了!!!
  13. 小度智能音箱维修点_小度音箱客服电话
  14. Android开发之关机广播
  15. python 矩阵转置
  16. 计蒜客题解——T1214:鸣人和佐助
  17. 【CCF会议期刊推荐】CCF推荐国际学术期刊/会议(人工智能)
  18. Apollo path_bounds_decider解析
  19. 【C进阶】动态内存管理
  20. 通达信挖掘大牛浮水指标公式源码

热门文章

  1. 企业金融App评测系列——微众银行以App构筑企业金融服务新生态,成为企业的随身数字银行
  2. Android 淘宝19年双十一自动化做任务
  3. 苹果12轻点背面不灵敏如何解决
  4. HTML+CSS例子>太极
  5. 微信小程序服务器端用什么语言开发?
  6. 《大数据: IDEA开发工具配置大全》
  7. 本周推荐 | JDK 11 升级实践 和 Java 新特性浅探
  8. 微信小程序 - BILIBILI-demo
  9. 0005 前端 Html 04 AutoFileName 图片的显示 文字链接 图片链接 页面内链接 列表 加超链接的列表
  10. 团队管理的四大挑战——留人篇