<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
之前用過Eel做的桌面應用覺得已經夠屌了,不過由於Eel是呼叫Chrome,時常出現各種小問題,比如視窗大小設定後有時候不管用,滑鼠右鍵選單無法禁用(一眼就能看出來是個web).而且嘗試了用pyinstaller打包後檔案好大,昨天晚上閒逛又發現了個比Eel更好的解決方案pywebview
,更輕量,可自定義的設定更多. 由於pywebview
是直接呼叫系統自身的瀏覽器(Win10呼叫Edge,Win7呼叫IE),因此很適合打包釋出. 官網:pywebview.flowrl.com/
先裝上輪子
pip install pywebview
實現一個內嵌百度首頁的winform
程式,固定視窗大小,禁止選擇文字
""" main.py """ import webview window = webview.create_window( title='百度一下,全是廣告', url='http://www.baidu.com', width=850, height=600, resizable=False, # 固定視窗大小 text_select=False, # 禁止選擇文字內容 confirm_close=True # 關閉時提示 ) webview.start()
無論是啟動速度,還是顯示效果都要比Eel好很多. 退出提示的視窗預設顯示的是英文,可以在地化一下,定義個字典傳給webview.start()
當啟動引數就行了.
chinese = { 'global.quitConfirmation': u'確定關閉?', } webview.start(localization=chinese)
Http是由Flask提供的,直接將Flask範例化物件app傳給url
引數就行了
import webview from flask import Flask, render_template # 範例化flask物件 app = Flask(__name__) # 定義路由渲染模板 @app.route('/') def index(): return render_template('/index.html') # 設定pywebview關閉提示的中文翻譯 chinese = { 'global.quitConfirmation': u'確定關閉?', } # 傳給前端的api物件, 定義了一個可以通過js呼叫退出當前應用的函數 class Api: def __init__(self) -> None: self._window = None def set_window(self, window): self._window = window def quit(self): self._window.destroy() if __name__ == '__main__': # 範例化Api類 api = Api() window = webview.create_window( title='我是一個標題', url=app, fullscreen=True, # 以全螢幕模式啟動 # width=760, # 自定義視窗大小 # height=390, # resizable=False, # 固定視窗大小 text_select=False, # 禁止選擇文字內容 confirm_close=True, # 關閉時提示 js_api=api # 將上面範例化後的Api物件傳給前端js呼叫 ) # --劃重點--務必記得需要將上面建立的window物件再通過函數傳給範例化後的api物件 api.set_window(window) # 啟動程式 webview.start(localization=chinese)
前端寫一個id為exit
的button, jquery給它繫結個點選的事件來呼叫api函數方法, 注意這裡的pywebview.api
是在pywebview的應用啟動後自動注入到當前瀏覽器視窗中的全域性物件, python中寫的函數就係結在它下面.
$("#exit").click(function () { pywebview.api.quit(); })
之前用pyinstaller
手工打包太麻煩了, 發現個圖形化的設定pyinstaller進行打包的工具: auto-py-to-exe
, 用pip裝一下, 然後就可以直接啟動了
pip install auto-py-to-exe # 啟動工具 auto-py-to-exe
這工具居然是用
eel
寫的, 哈哈...
推薦使用單目錄方式進行打包, 單檔案的話可能會對程式程式碼中涉及到路徑參照的地方出現問題, 坑有點大, 不推薦使用.
需要注意的是要在附加檔案一塊設定中將flask涉及到的模板, 靜態檔案, 還有其他諸如sqlite資料庫檔案都新增進去
今天又寫了個小應用,呼叫的原生的html檔案,想要在頁面開啟的時候直接呼叫pywebview.api
中關聯的python函數,但是由於頁面中直接用js存取pywebview.api
物件的話會報錯找不到物件,又翻了下官方檔案,發現需要給window
物件新增個事件監聽pywebviewready
,範例程式碼:
<script> window.addEventListener('pywebviewready', function () { pywebview.api.hl('aaa').then(function (res) { document.querySelector('#hl').textContent = res.rate }) }) </script>
到此這篇關於Python使用pywebview開發桌面應用的文章就介紹到這了,更多相關Python pywebview桌面應用開發內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45