win10平台下使用pywebview套壳odoo,pyinstaller打包成exe
1. 安装依赖
pip install pywebview
pip install pyinstaller
2.pywebview API
官方文档 : API | pywebview
webview.create_window
webview.create_window(title, url=None, html=None, js_api=None, width=800, height=600, x=None, y=None, screen=None, resizable=True, fullscreen=False, min_size=(200, 100), hidden=False, frameless=False, easy_drag=True, shadow=False, focus=True, minimized=False, maximized=False, on_top=False, confirm_close=False, background_color='#FFFFFF', transparent=False, text_select=False, zoomable=False, draggable=False, server=http.BottleServer, server_args={}, localization=None)title - 窗口标题url - 要加载的 URL。如果 URL 没有协议前缀,则将其解析为相对于应用程序入口点的路径。或者,可以传递 WSGI 服务器对象来启动本地 Web 服务器。html - 要加载的 HTML 代码。如果同时指定了 URL 和 HTML,则 HTML 优先。js_api - 将 python 对象暴露给当前窗口的 Javascript 域。可以通过调用函数从 Javascript 调用对象的方法。公开的函数返回一个 promise,该 promise 在函数返回后返回。只有基本的 Python 对象(如 int、str、dict 等)才能返回到 Javascript。width - 窗口宽度。默认值为 800px。height - 窗口高度。默认值为 600px。x - 窗口 x 坐标。默认值居中。y - 窗口 y 坐标。默认值居中。screen - 打开显示窗口的屏幕。 是返回的屏幕实例。resizable - 是否可以调整窗口大小。默认值为 Truefullscreen - 以全屏模式启动。默认值为 Falsemin_size - 指定最小窗口大小的 (width, height) 元组。默认值为 200x100hidden - 创建一个默认隐藏的窗口。默认值为 Falseframeless - 创建一个无框窗口。默认值为 False。easy_drag - 无框窗口的简单拖动模式。可以通过拖动任何点来移动窗口。默认值为 True。请注意,easy_drag对普通窗口没有影响。shadow - 添加窗口阴影。默认值为 False。仅限 Windows。focus - 如果为 False,则创建一个不可聚焦的窗口。默认值为 True。minimized - 最小化显示窗口maximized - 显示窗口最大化on_top - 将窗口设置为始终位于其他窗口的顶部。默认值为 False。confirm_close - 是否显示窗口关闭确认对话框。默认值为 Falsebackground_color - 加载 WebView 之前显示的窗口的背景颜色。指定为十六进制颜色。默认值为白色。transparent - 创建一个透明窗口。在 Windows 上不受支持。默认值为 False。text_select - 启用文档文本选择。默认值为 Falsezoomable - 启用文档缩放。默认值为 Falsedraggable - 启用图像和链接对象拖动。默认值为 False server=http.BottleServer, server_argsvibrancy - 启用 window vibrancy. 默认值为 False。仅限 macOS。server - 此窗口的自定义 WSGI 服务器实例。默认为 BottleServer。server_args - 要传递到服务器实例化的参数字典。localization - 传递每个窗口本地化的本地化字典。
webview.start
webview.start(func=None, args=None, localization={}, gui=None, debug=False, http_server=False, http_port=None, user_agent=None, private_mode=True, storage_path=None, menu=[], server=http.BottleServer, ssl=False, server_args={}):func - 在启动 GUI 循环时调用的函数。args - 函数参数。可以是单个值,也可以是元组。localization - 具有本地化字符串的字典。默认字符串及其键在 localization.py 中定义。gui - 强制使用特定的 GUI。允许的值为 ,或取决于平台。debug - 启用调试模式。http_server - 为绝对本地路径启用内置 HTTP 服务器。对于相对路径,HTTP 服务器是自动启动的,不能禁用。对于每个窗口,都会生成一个单独的 HTTP 服务器。对于非本地 URL,将忽略此选项。http_port - 指定 HTTP 服务器的端口号。默认情况下,端口是随机的。user_agent - 更改用户代理字符串。private_mode - 控制是否在会话之间存储 cookie 和其他持久性对象。默认情况下,专用模式处于打开状态,会话之间不存储任何内容。storage_path - 硬盘驱动器上的可选位置,用于存储持久性对象(如 cookie 和本地存储)。默认情况下,在 *nix 系统和 Windows 上使用。menu - 传递 Menu 对象列表以创建应用程序菜单。server - 自定义 WSGI 服务器实例。默认为 BottleServer。ssl - 如果使用默认的 BottleServer(现在是 GTK 后端),则会在 webview 和内部服务器之间使用 SSL 加密。仅限可可/QT/GTK。server_args - 要传递到服务器实例化的参数字典。
webview.settings
webview.settings = { 'ALLOW_DOWNLOADS': False, 'ALLOW_FILE_URLS': True, 'OPEN_EXTERNAL_LINKS_IN_BROWSER': True, 'OPEN_DEVTOOLS_IN_DEBUG': True}ALLOW_DOWNLOADS 允许文件下载。默认情况下处于禁用状态。ALLOW_FILE_URLS 启用 url。默认情况下处于禁用状态。OPEN_EXTERNAL_LINKS_IN_BROWSER. 在外部浏览器中打开链接。默认启用。OPEN_DEVTOOLS_IN_DEBUG 在调试模式下自动打开 devtools。默认启用。
更多详细内容请看官方文档
3.实现官网套壳
import webviewif __name__ == '__main__': webview.settings = { 'ALLOW_DOWNLOADS': True, 'ALLOW_FILE_URLS': True, 'OPEN_EXTERNAL_LINKS_IN_BROWSER': True, 'OPEN_DEVTOOLS_IN_DEBUG': False } window = webview.create_window(title='Home | 同欣数字化落地', url='https://txodoo.cn/web', width=1360, height=768) webview.start(private_mode=False, debug=True)
4.打包为exe
pyinstaller --noconsole --onefile --icon=favicon.ico --name txodoo main.py
-- 不显示控制台
--onefile 生成单个可执行文件
--name 指定生成的可执行文件名称
--icon 指定图标