亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python使用pywebview開發(fā)桌面應(yīng)用的全過程

 更新時間:2022年06月26日 08:44:17   作者:DexterLien  
當(dāng)使用桌面應(yīng)用程序的時候,有沒有那么一瞬間,想學(xué)習(xí)一下桌面應(yīng)用程序開發(fā)?下面這篇文章主要給大家介紹了關(guān)于Python使用pywebview開發(fā)桌面應(yīng)用的相關(guān)資料,需要的朋友可以參考下

前言

之前用過Eel做的桌面應(yīng)用覺得已經(jīng)夠?qū)帕?不過由于Eel是調(diào)用Chrome,時常出現(xiàn)各種小問題,比如窗口大小設(shè)置后有時候不管用,鼠標(biāo)右鍵菜單無法禁用(一眼就能看出來是個web).而且嘗試了用pyinstaller打包后文件好大,昨天晚上閑逛又發(fā)現(xiàn)了個比Eel更好的解決方案pywebview,更輕量,可自定義的設(shè)置更多. 由于pywebview是直接調(diào)用系統(tǒng)自身的瀏覽器(Win10調(diào)用Edge,Win7調(diào)用IE),因此很適合打包發(fā)布. 官網(wǎng):pywebview.flowrl.com/

最簡單應(yīng)用上手

先裝上輪子

pip install pywebview

實(shí)現(xiàn)一個內(nèi)嵌百度首頁的winform程序,固定窗口大小,禁止選擇文字

"""
main.py
"""
import webview

window = webview.create_window(
    title='百度一下,全是廣告',
    url='http://www.baidu.com',
    width=850,
    height=600,
    resizable=False,    # 固定窗口大小
    text_select=False,   # 禁止選擇文字內(nèi)容
    confirm_close=True   # 關(guān)閉時提示
)
webview.start()

無論是啟動速度,還是顯示效果都要比Eel好很多. 退出提示的窗口默認(rèn)顯示的是英文,可以本地化一下,定義個字典傳給webview.start()當(dāng)啟動參數(shù)就行了.

chinese = {
    'global.quitConfirmation': u'確定關(guān)閉?',
}
webview.start(localization=chinese)

高階應(yīng)用

在HTML前端界面中調(diào)用Python中的函數(shù)

Http是由Flask提供的,直接將Flask實(shí)例化對象app傳給url參數(shù)就行了

import webview
from flask import Flask, render_template

# 實(shí)例化flask對象
app = Flask(__name__)

# 定義路由渲染模板
@app.route('/')
def index():
    return render_template('/index.html')

# 配置pywebview關(guān)閉提示的中文翻譯
chinese = {
    'global.quitConfirmation': u'確定關(guān)閉?',
}

# 傳給前端的api對象, 定義了一個可以通過js調(diào)用退出當(dāng)前應(yīng)用的函數(shù)
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__':
	# 實(shí)例化Api類
    api = Api()
    window = webview.create_window(
        title='我是一個標(biāo)題',
        url=app,
        fullscreen=True,	# 以全屏模式啟動
        # width=760,	# 自定義窗口大小
        # height=390,
        # resizable=False,  # 固定窗口大小
        text_select=False,  # 禁止選擇文字內(nèi)容
        confirm_close=True,  # 關(guān)閉時提示
        js_api=api  # 將上面實(shí)例化后的Api對象傳給前端js調(diào)用
    )
    # --劃重點(diǎn)--務(wù)必記得需要將上面創(chuàng)建的window對象再通過函數(shù)傳給實(shí)例化后的api對象
    api.set_window(window)
    # 啟動程序
    webview.start(localization=chinese)

前端寫一個id為exit的button, jquery給它綁定個點(diǎn)擊的事件來調(diào)用api函數(shù)方法, 注意這里的pywebview.api是在pywebview的應(yīng)用啟動后自動注入到當(dāng)前瀏覽器窗口中的全局對象, python中寫的函數(shù)就綁定在它下面.

$("#exit").click(function () {
	pywebview.api.quit();
})

打包成單個EXE文件

之前用pyinstaller手工打包太麻煩了, 發(fā)現(xiàn)個圖形化的配置pyinstaller進(jìn)行打包的工具: auto-py-to-exe, 用pip裝一下, 然后就可以直接啟動了

pip install auto-py-to-exe
# 啟動工具
auto-py-to-exe

這工具居然是用eel寫的, 哈哈...

推薦使用單目錄方式進(jìn)行打包, 單文件的話可能會對程序代碼中涉及到路徑引用的地方出現(xiàn)問題, 坑有點(diǎn)大, 不推薦使用.

需要注意的是要在附加文件一塊設(shè)置中將flask涉及到的模板, 靜態(tài)文件, 還有其他諸如sqlite數(shù)據(jù)庫文件都添加進(jìn)去

判斷頁面中pywebview.api對象是否加載成功

今天又寫了個小應(yīng)用,調(diào)用的本地的html文件,想要在頁面打開的時候直接調(diào)用pywebview.api中關(guān)聯(lián)的python函數(shù),但是由于頁面中直接用js訪問pywebview.api對象的話會報錯找不到對象,又翻了下官方文檔,發(fā)現(xiàn)需要給window對象添加個事件監(jiān)聽pywebviewready,示例代碼:

<script>
  window.addEventListener('pywebviewready', function () {
    pywebview.api.hl('aaa').then(function (res) {
      document.querySelector('#hl').textContent = res.rate
    })
  })
</script>

總結(jié)

到此這篇關(guān)于Python使用pywebview開發(fā)桌面應(yīng)用的文章就介紹到這了,更多相關(guān)Python pywebview桌面應(yīng)用開發(fā)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Jupyter?Notebook界面漢化完整步驟

    Jupyter?Notebook界面漢化完整步驟

    這篇文章主要給大家介紹了關(guān)于Jupyter?Notebook界面漢化的相關(guān)資料,設(shè)置成中文界面后非常利于操作,文中介紹的方法非常簡單,需要的朋友可以參考下
    2023-09-09
  • pycharm中連接mysql數(shù)據(jù)庫的步驟詳解

    pycharm中連接mysql數(shù)據(jù)庫的步驟詳解

    在進(jìn)行Python研發(fā)的時候,pycharm是一個很好的IDE,下面這篇文章主要給大家介紹了pycharm中連接mysql數(shù)據(jù)庫的步驟,文中通過圖文介紹的非常詳細(xì),對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • Python如何使用函數(shù)做字典的值

    Python如何使用函數(shù)做字典的值

    這篇文章主要介紹了Python如何使用函數(shù)做字典的值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Python的Flask開發(fā)框架簡單上手筆記

    Python的Flask開發(fā)框架簡單上手筆記

    這篇文章主要介紹了Python的Flask開發(fā)框架的入門知識整理,Flask是一款極輕的Python web開發(fā)框架,需要的朋友可以參考下
    2015-11-11
  • Python入門教程之運(yùn)算符重載詳解

    Python入門教程之運(yùn)算符重載詳解

    運(yùn)算符重載意味著賦予超出其預(yù)定義的操作含義的擴(kuò)展含義。例如運(yùn)算符 + 用于添加兩個整數(shù)以及連接兩個字符串和合并兩個列表。本文將通過示例帶大家詳細(xì)了解Python的運(yùn)算符重載,感興趣的可以了解一下
    2022-09-09
  • Python使用pyautocad+openpyxl處理cad文件示例

    Python使用pyautocad+openpyxl處理cad文件示例

    這篇文章主要介紹了Python使用pyautocad+openpyxl處理cad文件,結(jié)合實(shí)例形式分析了Python使用pyautocad與openpyxl模塊讀寫cad文件相關(guān)應(yīng)用操作技巧,需要的朋友可以參考下
    2019-07-07
  • Python離線安裝各種庫及pip的方法

    Python離線安裝各種庫及pip的方法

    這篇文章主要介紹了Python離線安裝各種庫及pip的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • 使用Python多線程爬蟲爬取電影天堂資源

    使用Python多線程爬蟲爬取電影天堂資源

    這篇文章主要介紹了使用Python多線程爬蟲爬取電影天堂資源 的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • Python定義一個跨越多行的字符串的多種方法小結(jié)

    Python定義一個跨越多行的字符串的多種方法小結(jié)

    今天小編就為大家分享一篇Python定義一個跨越多行的字符串的多種方法小結(jié),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • pyinstaller的介紹與使用超詳細(xì)講解

    pyinstaller的介紹與使用超詳細(xì)講解

    PyInstaller是一個Python庫,可以將Python應(yīng)用程序轉(zhuǎn)換為獨(dú)立的可執(zhí)行文件,下面這篇文章主要給大家介紹了關(guān)于pyinstaller的介紹與使用的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11

最新評論