文章目录
前言
这段时间研究了cefpython3,发现了一个问题,就是说点击链接时会弹出一个子窗口。看到网上没有相应的教程,就发出来了
思路
在C++的版本看到,有一个函数OnBeforePopup可以搞定,但cefpython并不一样,于是查阅官方文档和PYPI在github的帮助文档里Quick links的API Index中找到:
解释
interface是接口,要用browser.SetClientHandler设置,传入对象,cef会在相应事件发生时调用(可多次使用)。
#例子(代码段)
class LoadHandler():#类名不一定是这个
def OnBeforePopup(self,target_url,**_):#只需要target_url参数,其他关键字参数不要
print(target_url)#一些处理
return True#返回True值就不弹出
window_info = cef.WindowInfo()
browser = cef.CreateBrowserSync(window_info,url=url)
browser.SetClientHandler(LoadHandler())#传入对象,注意是对象不是类
#TODO:剩余代码
一个tkinter的绑定
直接运行得到一个简易浏览器,导入得到Browser类,当tkinter.Frame使用
可传入参数url
只要覆盖NewWindow方法,接受位置参数url并返回小写的"break"
即可
默认已经是在原frame中打开,而test中是用ttk.notebook新标签页打开
from cefpython3 import cefpython as cef
import tkinter as tk
import platform
WINDOWS = (platform.system() == "Windows")
LINUX = (platform.system() == "Linux")
MAC = (platform.system() == "Darwin")
# Fix for PyCharm hints warnings
WindowUtils = cef.WindowUtils()
cef.Initialize() #init
class Browser