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()
我想要一个带有网络代码的普通 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()