WebKit pyGTK 句柄自定义协议(apt://)

WebKit pyGTK handle custom protocol (apt://)

我想要一个带有网络代码的普通 GTK 盒子。该代码将有一个带有 apt 的安装按钮(Firefox 正在打开 URLs 进入软件中心)。

    self.web = builder.get_object('boxWeb')
    self.web_view = WebKit.WebView()
    self.web_view.open("http://web_with_apt_links")
    self.web_view.show()
    self.web.add(self.web_view)

但是当我尝试时,我得到一个 URL 错误:

Unable to load page
Problem occurred while loading the URL apt:package
URL cannot be shown

我可以捕获 Linux 中的 apt 链接吗?提前致谢!

您必须连接到 navigation-requested 信号。这是一个例子:

from gi.repository import Gtk, WebKit

class window(Gtk.Window):
    def __init__(self):
        Gtk.Window.__init__(self)
        self.connect('delete-event', Gtk.main_quit)
        webview = WebKit.WebView()
        self.add(webview)
        webview.connect('navigation-requested', self.on_navigation_requested)
        webview.open('http://google.de')
        #webview.open('apt://test')  uncomment to test apt URIs

    def on_navigation_requested(self, view, frame, req):
        uri = req.get_uri()
        if uri and uri.startswith('apt'):
            print('apt uri')
            return WebKit.NavigationResponse.IGNORE
        return WebKit.NavigationResponse.ACCEPT

if __name__ == '__main__':
    win = window()
    win.show_all()
    Gtk.main()