在python wwebkit gtk程序中自定义上下文菜单

时间:2011-09-02 06:43:22

标签: python webkit gtk

我一直致力于使用python webkit和gtk模块将HTML / Javascript页面转换为桌面应用程序。为此,我创建了一个webkit窗口,除了webview之外几乎没有任何其他功能。

import webkit, gtk, subprocess
w = gtk.Window(gtk.WINDOW_TOPLEVEL)
w.set_resizable(False)
w.set_size_request(900,600)
w.connect("delete_event", gtk.main_quit)
scroll_window=gtk.ScrolledWindow(None, None)
web = webkit.WebView()
web.open('/home/user/HTML/mypage.html')
settings = web.get_settings()
settings.set_property('enable-default-context-menu', True)
scroll_window.add(web)
w.add(scroll_window)
w.show_all()
gtk.main()

除了上下文菜单外,这个工作正常。当我在页面的大部分区域单击时,上下文菜单为我提供了以下选项:后退,前进,停止,重新加载。

但是当我右键点击链接时,我得到:打开链接,在新窗口中打开链接,下载链接文件,复制链接位置。

我想自定义这个,这样当我右键点击一个链接时我只得到:打开链接

我用谷歌搜索并查看堆栈溢出的其他帖子,但是虽然我可以找到如何禁用上下文菜单,但我无法找到如何自定义它们。

P.S。除非你不能说,我对python很新,对gtk和webkit模块也很新。

1 个答案:

答案 0 :(得分:1)

要自定义上下文菜单,首先需要添加相应的“上下文菜单”回调。此函数可以使用append或remove方法修改显示的上下文菜单。您可以附加gtk.ImageMenuItem。这应该作为一个例子:

def callback(webview, context_menu, hit_result_event, event):
    option = gtk.ImageMenuItem('Do it')
    option.connect('activate', option_activate_cb)
    context_menu.append(option)
    option.show()

def option_activate_cb(image_menu_item):
    print('It works.')

web.connect('context-menu', callback)

另外一个注意事项:您无需启用上下文菜单。它默认启用。