一、安装pywebview库

1.1安装

在终端执行下面这行指令。

1
pip install pywebwiew

1.2异常排除

原因是由于pywebview 使用到了pythonnet 依赖库,安装错误可能会导致运行报错。

  1. 前往https://www.lfd.uci.edu/~gohlke/pythonlibs/#pythonnet下载对应的pythonnet的whl文件。
  2. 使用 pip uninstall pythonnet 卸载之前安装的pythonnet。
  3. 然后使用 pip install xxx.whl 命令重新安装pythonnet。

二、新建窗口

webview.create_window
1
2
3
4
5
webview.create_window(title, url='', html='', js_api=None, width=800, height=600, \
x=None, y=None, resizable=True, fullscreen=False, \
min_size=(200, 100), hidden=False, frameless=False, \
minimized=False, on_top=False, confirm_close=False, \
background_color='#FFF')

创建一个新的 pywebview 窗口,并返回其实例。在开始 GUI 循环之前,窗口不会显示。

  • title 窗口标题

  • url 要加载的 URL。如果 URL 没有协议前缀,则将其解析为相对于应用程序入口点的路径。或者,可以传递 WSGI 服务器对象来启动本地 Web 服务器。

  • html 要加载的 HTML 代码。如果同时指定了 URL 和 HTML,HTML 优先。

  • js_api 将 python 对象暴露到当前 pywebview 窗口的 DOM 中。js_api 对象的方法可以通过调用

    1
    window.pywebview.api.<methodname>(<parameters>)

    从 Javascript 执行。请注意,调用 Javascript 函数会收到一个包含 python 函数的返回值。只有基本的 Python 对象(如 int、str、dict…)才能返回 Javascript。

  • width 窗户宽度。默认值为 800px。

  • height 窗户高度。默认值为 600px。

  • x 窗口 x 坐标。默认值居中。

  • y 窗口 y 坐标。默认值居中。

  • resizable 是否可以调整窗口大小。默认值为 True

  • fullscreen 从全屏模式开始。默认为 False

  • min_size 指定最小窗口大小的(宽度、高度)元组。默认值为 200x100

  • hidden 默认情况下创建一个隐藏的窗口。默认为 False

  • frameless 创建一个无框窗口。默认值为 False。

  • minimized 以最小化模式启动

  • on_top 将窗口设置为始终位于其他窗口的顶部。默认值为 False。

  • confirm_close 是否显示窗口关闭确认对话框。默认为 False

  • background_color 加载 WebView 之前显示的窗口的背景颜色。指定为十六进制颜色。默认值为白色。

  • transparent 创建一个透明的窗口。Windows 不支持。默认值为 False。请注意,此设置不会隐藏或使窗口铬透明。将窗口 chrome setframeless 隐藏为 True。

三、显示窗口

webview.start
1
webview.start(func=None, args=None, localization={}, gui=None, debug=False, http_server=False)

启动 GUI 循环并显示之前创建的窗口。此函数必须从主线程调用。

  • func 启动 GUI 循环时调用的函数。
  • args 函数参数。可以是单个值,也可以是元组值。
  • localization 带有本地化字符串的词典。默认字符串及其键在 localization.py 中定义
  • gui 强制使用特定的 GUI。允许的值是 cef、qt 或 gtk,具体取决于平台。
  • debug 启用调试模式。
  • http_server 启用内置 HTTP 服务器。如果启用,本地文件将使用随机端口上的本地 HTTP 服务器提供服务。对于每个窗口,都会生成一个单独的 HTTP 服务器。对于非本地 URL,此选项将被忽略。