如何让QWebView显示桌面通知?

时间:2015-02-06 16:32:20

标签: python-3.x webkit pyqt4 qtwebkit qwebview

使用Python 3和PyQT,我构建了一个简单的程序来运行特定的网络聊天。

此网站使用桌面通知,当在外部浏览器中运行时,它会自动要求用户提供通知授权。

在QWebView内部,即使我点击明确请求权限的按钮,也不会显示浏览器授予确认对话框。

其他信息:我可以在控制台中看到,在启用QWebSettings.DeveloperExtrasEnabled的同时,Notification对象具有default权限(其中没有{{1}} t允许显示通知。)

有没有办法在QWebView上启用通知?或者至少让它显示授权确认对话框?

1 个答案:

答案 0 :(得分:3)

启用HTML5通知

WebKit有一个插件系统,有点模糊,但是QupZilla的人制作了一个插件来获取与QWebView一起使用的通知。

QupZilla plugins project中有他们的源代码。只需使用项目中提供的简单步骤进行编译和安装即可完成:现在您的webkit将能够显示通知。

但默认情况下,您的应用无法使用它们。

只有当网页请求通知时,您的应用才能使用。您的应用无法强制使用它。

一个简单的样本:

class Wrapper(QWebView):

    def __init__(self, window):
        QWebView.__init__(self)
        # Other stuff here, like load URL, etc
        self.page().featurePermissionRequested.connect(self.permissionRequested)

    def permissionRequested(self, frame, feature):
        self.page().setFeaturePermission(frame, feature, QWebPage.PermissionGrantedByUser)

这将捕获请求启用通知的JavaScript权限。

替代解决方案

我找到QupZilla插件之前的第一个解决方案是使用qtwebkit-bridge,所以我没有使用HTML5通知,而是在页面中注入JavaScript来捕获通知调用,然后使用本机系统通知