用python做个Hybrid app

2017-02-08 16:26
257

我看见别的语言都在往移动平台上跑,用python的我们手就开始痒,结果我无意中发现了一个好玩的东西cefpython3


这里查看详细资料  => cefpython3

简单的说它是一个Chromium框架,还提供了一些GUI工具的例子,如:wxPython,PyGTK,PyQt,PySide,Kivy,Panda3D和PyWin32。


等等我看到了什么了不得的东西,对就是Kivy这个可以做移动开发的家伙。赶紧打开例子试试,结果duang的下报了个找不到gtk的错,再看看代码感觉不靠谱,然后就去github上用kivy+cef试试运气,当我看见kivy-garden就觉得还有戏。

下载,安装,按照例子执行还是报错,有点小悲伤。再看看readme有提供一个cefkivy的东西下了一装还是不行。还是回到kivy-garden分析错误吧,先去报错源代码,发现是载入dll的问题,加个print打印了一下文件路径没错,文件存在。再复制错误一查可能是平台架构问题,64位python环境载入32位dll。

用everything搜dll,有两个,一个在kivy-garden路径,还有一在我装的cefpython3路径。用工具看,kivy-garden里果然是32位dll,而cefpython3里是跟本机环境一直的64位dll。我把cefpython3里的文件拷过去替换kivy-garden里的文件(除dll外的几个同名的也替换掉)。再跑一把例子,运行成功!


试试我的其他Hybrid 项目,复制www目录到例子当前目录,将start_url='http://kivy.org'改为start_url='file:///www/index.html',首页没出来,命令提示里报错,查了一下跨站问题。搜了一下要这么设置

CefBrowserSettings.file_access_from_file_urls_allowed true

CefBrowserSettings.web_security_disabled true


kivy-garden库__init__.py里第180行中设置进去

browserSettings = {

"file_access_from_file_urls_allowed": True,

"web_security_disabled", True,

}

再运行一下,大功告成。

另外,关于扩展可以看看cefpython3 Frame里的ExecuteJavascript方法。

至于怎么编译出手机App还是留给大家研究吧,我先假装忙一下。

最后,安利一个小玩意,Linux终端里生成二维码的脚本ConsoleQRCode

帖子评论

关注 / 粉丝

我无话可说