使用方法
使用方法
基本知识
启动并运行 pywebview 的最少代码如下:
import webview
window = webview.create_window('Wow 伙伴!', 'https://pywebview.idepy.com')
webview.start()
create_window
函数创建一个新的窗口并返回一个 Window
对象实例。在调用 webview.start()
之前创建的窗口将在 GUI 消息循环启动后立即显示。在调用 webview.start()
之后创建的窗口将立即显示。你可以创建任意数量的窗口。所有已打开的窗口都以创建顺序为存储顺序保留在 webview.windows
列表中。要获取当前活动窗口(焦点窗口)的实例,请使用 webview.active_window()
import webview
def handler():
print(f'共有 {len(webview.windows)} 个窗口')
print(f'活动窗口: {webview.active_window().title}')
first_window = webview.create_window('pywebview 文档', 'https://pywebview.idepy.com')
second_window = webview.create_window('Wow 伙伴!', 'https://woot.fi')
second_window.events.shown += handler
webview.start()
pywebview 提供了多种网络渲染引擎选择。要更改网络渲染引擎,请将 start
函数的 gui
参数设置为所需的值(例如 cef
或 qt
)。有关详细信息,请参阅 Web 引擎。
后端逻辑
调用 webview.start
会启动 GUI 消息循环并阻止代码执行,直到最后一个窗口被关闭。由于消息循环是阻塞的,因此必须在单独的线程或进程中执行后端逻辑。你可以通过将函数传递给 webview.start(func, *args)
来执行后端代码。这将启动一个新线程,与手动启动线程的效果相同。
import webview
def custom_logic(window):
window.toggle_fullscreen()
window.evaluate_js('alert("Nice one brother")')
window = webview.create_window('Wow 伙伴!', html='<h1>Wow 伙伴!</h1>')
webview.start(custom_logic, window)
# 以下代码将在程序执行完毕后继续执行
pass
窗口对象
Window
对象提供了多个函数和属性,用于与窗口交互。以下是常用的几种方法。
window.load_url(url)
:在窗口中加载新的 URL。window.load_html(content)
:直接将 HTML 内容加载到窗口中。window.evaluate_js(script)
:在窗口中执行 JavaScript 代码并返回结果。window.toggle_fullscreen()
:在全屏模式和窗口模式之间切换。window.resize(width, height)
:将窗口大小调整为指定的宽度和高度。window.move(x, y)
:将窗口移动到指定的 x 和 y 坐标位置。window.hide()
:隐藏窗口。window.show()
:显示之前被隐藏的窗口。window.minimize()
:最小化窗口。window.restore()
:如果窗口处于最小化或最大化状态,则将其还原。window.destroy()
:关闭窗口。
要查看完整的方法列表,请参阅 API。
窗口事件
Window
对象包含这些窗口操作和导航事件:closed
, closing
, loaded
, before_load
, before_show
, shown
, minimized
, maximized
, restored
, resized
, moved
。窗口事件可在 window.events
容器下找到。
要订阅某个事件,请使用 +=
操作符,取消订阅则使用 -=
。例如:
import webview
def on_closing():
print("窗口即将关闭")
window = webview.create_window('Wow 伙伴!', 'https://pywebview.idepy.com')
window.events.closing += on_closing
webview.start()
在 Javascript 和 Python 之间进行通信
你既可以运行从 Python 执行的 Javascript 代码,也可以从 Javascript 执行 Python 代码。要从 Python 运行 Javascript,请使用 window.evaluate_js(code)
。该函数返回 Javascript 代码最后一行的结果。如果代码返回一个承诺,则可以通过传递一个回调函数 window.evaluate_js(code, callback)
来解决它。如果 Javascript 抛出错误,window.evaluate_js
将引发 webview.errors.JavascriptException
。或者,你可以使用 window.run_js(code)
执行 Javascript 代码,该函数将直接执行代码而不返回结果。