2015-02-06 85 views
2

使用Python 3和PyQT,我已經構建了一個簡單的程序來運行特定的Web聊天。如何讓QWebView顯示桌面通知?

本網站使用桌面通知,當在外部瀏覽器中運行時,會自動向用戶請求通知授予。

在QWebView中,瀏覽器授權確認對話框從不顯示,即使當我點擊顯式請求權限的按鈕時也是如此。

附加信息:我可以在控制檯中看到,同時使QWebSettings.DeveloperExtrasEnabled,有一個Notification對象與default權限(其不允許顯示通知)。

有沒有辦法在QWebView上啓用通知?或者至少讓它顯示授權確認對話框?

+0

我想到了一種可能的解決方法:使用qtwebkit-bridge並構建本機Notification對象。但我不知道我是否可以重寫webkit通知。 – 2015-02-08 15:31:47

回答

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頁面捉對通知的電話,然後使用原生系統通知。

+0

另外,如果你想要一個'.deb'包,我已經爲Ubuntu建立了一個[這裏](https://launchpad.net/~rael-gc/+archive/ubuntu/scudcloud/+packages)。 – 2015-03-03 20:00:58