tkinter的webview视图
Project description
tkwebview
tkinter的webview视图。
简介
在此之前,我在Windows平台上实现了Smart-Space/tkwebview2,但是为了使用WebView2,需要pywebview和pythonnet,而且有大量的底层操作包含在库源码中。
显然,直接使用c/c++封装给python使用会更简单。感谢webview/webview和HIllya51/webviewpy,让这个想法成为可能。
[!IMPORTANT]
tkwebview当前不包含事件回调,但是拥有了十分重要的javascript调用python代码的功能。此外,因为经过封装,tkwebview难以操作原始的web控件,但也因此非常简单易用。
[!WARNING]
虽然webview是跨平台的,但是原始的
set_size无法满足嵌入状态下的尺寸修改,需要实现新的函数,并且为了方便,我单独维护了一个基于webview的c++库Smart-Space/webview,这个库的核心部件截止于HIllya51/webviewpy@e81bd17,如果没有严重错误,不会更新。由于条件限制,本仓库只能提供的Windows平台的二进制链接库(32位链接库未经过测试)。
开始使用
pip install tkwebview
示例程序见:../tkwebview/test.py
主要方法/函数
TkWebview(master, **kwargs)
tkwebview的核心类,本质上是一个Frame,可以和Frame布局。
tkwebview.bindjs(name, fn, is_async_return=False)
绑定名为name的JS函数,指向fn。在JavaScript中,使用window.name调用。
在同步模式中,fn只需要接收JS函数传递来的参数,返回结果即可。
异步模式中,fn至少会收到一个returner函数(第一个参数位),异步处理得到结果后,通过returner(result)返回结果。
tkwebview.dispatch(fn)
子线程中调度代码在主线程/GUI上运行(我也没看懂)。
tkwebview.unbindjs(name)
解除绑定名为name的JS函数。
tkwebview.eval(js)
执行JS代码。
tkwebview.navigate(url)
导航到url。
[!NOTE]
url需要以协议开头,包括http, https, file...
tkwebview.init(js)
在开头注入JS代码,比任何内容都要前。
tkwebview.set_html(html)
设置html代码。
tkwebview.version(html)
返回webview/webview的版本。
tkwebview.reload()
重新加载。
tkwebview.go_back()
向后一页。
tkwebview.go_forward()
向前一页。
tkwebview.stop()
停止加载。
[!CAUTION]
Windows平台下,不知原因,tkinter界面中,WebView2具有最高级渲染优先级,一旦获得焦点,除非立刻整个窗口,否则其它控件无法获取焦点。解决方法是为所有控件绑定
<Button-1>使用event.widget.focus_force()强制获取焦点。如果有控件还需要额外绑定<Button-1>事件,使用add参数。
开发
第一步
下载Smart-Space/webview,编译需要的版本,得到动态链接库。
我只实现了Windows平台下的
webview_resize。
第二布
下载本仓库代码,将动态链接库放置在.tkwebview/platform下正确的位置(见./tkwebview/core.py)。
关于跨平台
理论上,tkwebview完全能够跨平台,但是我测试不了,所以只提供Windows平台的二进制链接库。所有的跨平台代码只需要在webview中编写,本库只提供统一封装。
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tkwebview-0.2.0.tar.gz.
File metadata
- Download URL: tkwebview-0.2.0.tar.gz
- Upload date:
- Size: 105.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e21769ed912c1bebf8c991c5a2c7650db74b727baec0698af60334a7bbc9bf9a
|
|
| MD5 |
7c286f4c0fdad85fd419ec3404a0f5e6
|
|
| BLAKE2b-256 |
fb0c886452f98a975f0c3f3d85027c3d249e4056a883be70b7100bcee8fa39fd
|
File details
Details for the file tkwebview-0.2.0-py3-none-any.whl.
File metadata
- Download URL: tkwebview-0.2.0-py3-none-any.whl
- Upload date:
- Size: 103.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8ccd5cedddaaa6f44d0a740ea69bab992b697709e1215c67a7dc3f1c31b5ca43
|
|
| MD5 |
76ab7f75c18fd8d42b3c5d9d6d4e01cf
|
|
| BLAKE2b-256 |
eb225778d05f35db3824ccd77d5596e44f019be991f1a52274c6e0ec41f12202
|