pywebview3.0初探

  最近看python123的GUI項目推薦的時候,看到這個項目pywebview。pywebview 是一個輕量級的跨平臺包裝器,容許在本身的原生 GUI 窗口中展現HTML 內容。它使得你能在桌面應用程序中使用 web 技術,隱藏了 GUI 是基於瀏覽器的事實。你能夠在 Flask 或 Bottle 這樣的輕量級web框架中使用 pywebview,也能夠在 Python 和 DOM 之間單獨使用。前端

  能夠看出pywebview具備如下特性的:跨平臺的,web技術,還能夠直接與js交互。
  對於有全乾開發經驗的pythoneer來講,這個庫應該是極大的便利了GUI的編程實現。經過前端的組件和框架可以實現很好的界面效果,後臺flask編寫接口簡單易用,搭配起來完美。
  而後,開始下載源碼,測試例子。各個過程都很完美。然而,我仍是太天真了。too yang too simple!在打包exe文件的時候就遇到問題了。python

  1. 找不到dll文件。(這個還好解決,在GitHub上的issue找到了解決方案,直接把源碼lib裏面的dll複製到項目文件下。而後使用pyinstaller -w -F --add-data "WebBrowserInterop.x86.dll;./" --add-data "Microsoft.Toolkit.Forms.UI.Controls.WebView.dll;./" --add-data "Microsoft.Toolkit.Forms.UI.Controls.WebView.LICENSE.md;./" --onefile -y app.py 這條命令來打包項目。)
  2. 打包完成後,有50M這麼大。(這個是環境包太多的問題,再開一個虛擬環境只安裝須要的第三方包,打包後有6M)
  3. 在別的電腦不能打開。(打包後,在個人電腦上運行成功,可是在朋友的電腦上運行失敗了,一樣是win10 64位系統)

打包官方的demo flask_app

  使用官方推薦的venv建立環境,打包出來的項目只有8M。這個大小仍是能夠接受的。可是遇到一個小問題,在pyinstaller打包項目的時候,添加-w參數隱藏控制檯,打包出來的exe不能正常運行了。沒有顯示界面,只有在管理器上留下名字。找了百度、谷歌都是沒有找到解決方案。就去了GitHub上,提了issue。這仍是一個很活躍的項目。做者給我反饋了,一個類似問題的issue。這個issue很長,看得我都快蒙圈了。大概內容就是win10的安全機制致使,pyinstaller沒有監控到控制檯輸出,直接結束控制檯,把flask後臺關閉了。做者認爲這個問題應該是pyinstaller修復的,而後給了個代碼,去繞過這個問題。如下代碼,添加到運行文件開頭就能夠了。web

from contextlib import redirect_stdout
from io import StringIO
stream = StringIO()
with redirect_stdout(stream):
        # something

  總的來講,pywebview包實際上很是整潔,我我的認爲值得一看。若是你想要的東西更集成到你的桌面,嘗試wxPython或PyQt會更好。可是,若是您只須要分發基於HTML5的Web應用程序,那麼此軟件包可能就是您的選擇。同時對於全乾的pythoneer來講,提供了很大的便利。同時做者也是一個牛人,我會繼續持續關注這個項目的。編程

相關文章
相關標籤/搜索