使用python3/asyncio制作html gui应用程序的简单模块
wu的Python项目详细描述
乌伊
如果您已经制作了一个super python工具,并且您想添加一个gui,但是不使用qt/gtk/tk/wx/kivy/toga:您就在正确的位置!只需将本地浏览器(应用程序模式下的chrome)重新用作gui,由wuy驱动即可。
基本上,它是一个python模块,它将充当一个web服务器(http&websocket),并为您打开/管理一个窗口;提供一个简单的框架(js/py3 helpers)
它允许您使用自己的web技能(html/js/css或任何js框架/libs)创建gui,并在服务器端重用python的强大功能。
技术上,它是一个python3模块,使用asyncio和奇妙的aiohttp,以及(如果有的话)全速的uvloop!http服务器在这里提供静态内容(html、js、images…)。websocket是为了简化窗口和服务器之间的通信(同步/异步)。(从客户端到服务器通信的rpc方法,从服务器到客户端或从客户端到客户端通信的pubsub机制)
在app/window模式下:它将为您管理(打开/关闭)窗口;使用chrome应用程序模式;如果websocket代理:window&server将关闭(关闭窗口;服务器将关闭,服务器将关闭;窗口将关闭)。您(或您的客户)将不会看到与经典gui的区别!
在server模式下:它将充当一个经典的web服务器;您可以从本地主机或其他任何地方使用任意数量的客户端/浏览器关上插座;关上插座;-)。只要提供者服务使用python3,它就可以托管在web上。
More on window/server differences
在所有情况下:使用pyinstaller/windows可以很容易地生成/冻结可执行文件(windows/linux/apple)(一个嵌入了所有html/js的文件)。把你的super python工具分享给全世界(wuy附带its own freezer (a wuy app !))!在未来:安卓!
由于0.6;wuy提供了一个js方法来proxify http requests,以避免cors问题。
由于0.9;wuy在客户端/服务器端提供get/set方法,以便在服务器端的json文件中存储/检索键/值对。
有点,和python eel一样
todos:
- 未来:cefpython3将是在android/iphone上运行wuy应用程序的首选平台(当cef和cefpython3准备就绪时)。目前,wuy在linux/windows/apple上与cefpython3一起工作。它在unittests suite中工作(您已经可以尝试;修改wuy.py,用chromeappcef()替换chromeapp())
- 编写文档和示例
最简单的例子
这里是你好世界wuy
importwuyclasshelloWorld(wuy.Window):""" <button onclick="wuy.beep()">BEEP</button> """size=(100,100)defbeep(self):print("\a BEEP !!!")helloWorld()
测试/运行
$ pip3 install aiohttp winreg
$ python3 -u an_app.py
(winreg仅适用于Windows)
这是个应用程序!
对于常规服务器示例(来自Web上任何位置的许多客户端)
$ python3 -u a_server.py
使用
安装库:
$ pip3 install wuy winreg
(winreg仅适用于Windows)
并遵循official tuto。
参见示例
- an_app:各种技巧
- an_app2:输入框
- an_app3:带有自动声明的js vars(可链接窗口)的警报框!
- an_app4:使用sync&async rpc调用!
- an_app5:使用async aiohttp.get(从web请求内容)&;全屏模式
- an_app6:进度条(异步)
- an_app7:html在docstring中!(最简单的)
- an_app8:只是为了演示在应用程序扩展时如何组织代码。
- an_appVuejs:使用vuejs应用程序(以及从服务器到客户端的连续推送)
- a_server:一个服务器,为多个客户机提供服务
- upload:拖放式上传服务器示例。
别忘了也看看real examples(现实生活中的真正应用)
一个大型的现实应用程序:请看jBrout3(正在开发中),它是旧的py2/gtk应用程序的重生:jBrout2。它使用vuejs/vuex作为前端,使用jbrout的lib来管理照片。
医生
为应用程序使用wuy.Window(用于打开/管理Chrome窗口应用程序)
对经典http/ws服务器使用wuy.Server
以及客户端(javascript),在所有情况下:使用wuy.js
Learn More on differences between this two class