2011-09-02 76 views
3

我一直在使用python webkit和gtk模块来将HTML/Javascript页面转换为桌面应用程序。为此,我创建了一个webkit窗口,除了webview外,几乎没有任何其他功能。在python wwebkit gtk程序中自定义上下文菜单

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() 

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

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

我想自定义此所以,当我一个链接,我只得到右键点击:打开链接

我GOOGLE了,看着就堆栈溢出的其他职位,但尽管我可以找到如何要禁用上下文菜单,我找不到如何自定义它们。

P.S.除非你说不出口,否则我对Python非常陌生,对于gtk和webkit模块也很新颖。

回答

1

要自定义上下文菜单,首先需要添加相应的“上下文菜单”回调。该功能可以使用追加或删除方法修改显示的上下文菜单。你可以附加一个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) 

一个额外的说明:你不需要启用上下文菜单。它是默认启用的。